【发布时间】:2019-05-19 10:07:29
【问题描述】:
我正在尝试获取已发布 cmets 的用户的用户名,但是,我不断收到“尝试获取非对象的属性‘用户名’”错误。我相信我的关系是正确的,但我可能错了。
我的桌子:
Table: Users
Columns: id, username, password
Table: Comments
Columns: id, user_id, image_id, comment
评论模型:
class Comment extends Model
{
public function users(){
return $this->belongsTo('App\User');
}
}
用户模型:
class User extends Model implements Authenticatable
{
public function comments(){
return $this->hasMany('App\Comment');
}
}
我得到这样的 cmets:
$comments = Comment::with('users')->where('image_id', $id)->get();
然后尝试像这样在视图中循环它们:
@foreach($comments as $comment)
<p>{{ $comment->comment }}</p>
<p>{{ $comment->users->username }}</p>
@endforeach
当我 dd($cmets) 时,我看到了:
#relations: array:1 [▼
"users" => null
]
我不知道为什么它是空的。
【问题讨论】:
-
为什么?因为
$comment->users不是对象 -
据我了解,我可以根据stackoverflow.com/questions/29165410/… 做到这一点。
-
你的关系是正确的。也许你的分贝不正确。检查 cmets 表 user_id 列是否为空??4