在我的帖子模型中
public function user()
{
return $this->belongsTo('App\User');
}
在用户模型中
public function posts()
{
return $this->hasMany('App\Post');
}
现在我正在尝试获取特定用户的评论
$user= User::where('name', 'like', '%Mat%')->first();
return $user->posts->comment;
但它显示
此集合实例上不存在属性[comment]。
答案 0 :(得分:3)
因此返回集合的用户has many posts
,您需要循环显示该集合以获取您的评论。即
$user = User::where('name', 'like', '%Mat%')->first();
$user->posts->each(function($post) {
echo $post->comment;
});
答案 1 :(得分:0)
我想你可以试试这个:
$user= User::with('post')->where('name', 'like', '%Mat%')->get();
$postComment = array();
foreach($user->post as $post){
$postComment = $post->comment;
}
return $postComment;
希望对你有所帮助!!!
答案 2 :(得分:0)
如果您想要所有条评论,可以使用以下代码:
$comments = [];
$user = User::where('name', 'like', '%Mat%')->with(['post.comment' => function($query) use (&$comments) {
$comments = $query->get();
}])->first();
return $comments;
答案 3 :(得分:0)
此集合实例上不存在属性[comment]。
发生上述错误是因为Posts函数返回一个集合。现在,您将不得不遍历集合中的每个元素。
因为,你要返回$ user-> posts() - > comment,我假设你需要以数组的形式,并且不必简单地将它们一个接一个地回显。因此,您可以将它们全部存储在一个阵列中。然后处理它你喜欢什么。
$comments = array();
$user->posts()->each(function $post){
$comments = $post->comment;
}
return $comments;
为了更深入的了解,请参阅此集合函数: https://laravel.com/docs/5.4/collections#method-each