我有一个Post
模型,它通过此函数与Likes
模型具有多态关系:
public function likes() {
return $this->morphMany('App\Models\Like', 'likeable');
}
返回我的Likes
模型:
public function likeable() {
return $this->morphTo();
}
更新
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
模型中创建另一个函数,让每个User
与返回集合中每个user_id
对象的like
相关联,我是到目前为止写了这个:
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;
}
如何将$name
中的每个foreach
var推送到新的Eloquent集合中并返回?
答案 0 :(得分:0)
您不应直接在模型上调用 getLikes()。相反,您应该访问 getLikes 属性:
{{1}}
我还建议您将方法名称从 getLikes()更改为 likes()。它不是一个吸气剂,而是一个关系定义,而惯例就是用你命名关系的方式来命名这种方法。然后,您应该可以使用 $ post->赞来访问喜欢帖子的模型。
顺便说一下,除了用户之外,你还有其他任何模特吗?如果没有,你不需要多态关系, belongsToMany 就足够了。