[英]How to get a list of users who liked post using Eloquent ORM?
我有一個通過以下功能與Likes
模型具有多態關系的Post
模型:
public function likes() {
return $this->morphMany('App\Models\Like', 'likeable');
}
回到我的Likes
模型:
public function likeable() {
return $this->morphTo();
}
UPDATE
likes()
方法返回如下所示的集合:
[
{
"id":125,
"user_id":30,
"likeable_id":1,
"likeable_type":"App\Models\Post",
"created_at":"2017-10-13 22:06:13",
"updated_at":"2017-10-13 22:06:13"
},
{
"id":126,
"user_id":17,
"likeable_id":1,
"likeable_type":"App\Models\Post",
"created_at":"2017-10-13 22:06:13",
"updated_at":"2017-10-13 22:06:13"
}
]
現在,我想在Post
模型中創建另一個函數,該函數獲取與返回的集合中每個like
對象的user_id
關聯的每個User
,到目前為止,我已經編寫了此函數:
public function likeUsers($post) {
$likes = $post->Likes();
foreach ($likes as $like) {
$user = User::find($like->user_id);
$name = $user->first_name;
// Here is where i want to push the $name var into a new collection
}
//return new Collection;
}
如何將我的foreach
的每個$name
var推送到新的Eloquent集合中並返回?
您不應該在模型上直接調用getLikes() 。 相反,您應該訪問getLikes屬性:
foreach ($post->getLikes as $like) {
//$like will contain a model that likes the post
}
我還建議您將方法名稱從getLikes()更改為likes() 。 它不是一個獲取器,而是一個關系定義,約定是按照命名關系的方式來命名這種方法。 然后,您應該能夠使用$ post-> likes訪問喜歡您的帖子的模型。
順便說一句,除了用戶,您還會有其他模型嗎? 如果不是這樣,則您不需要多態關系, belongsToMany就足夠了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.