![](/img/trans.png)
[英]Getting empty array on Laravel eloquent relationship HasManyThrough
[英]Laravel eloquent relationship return empty array
我想显示一个链接、一页、一个标签和许多带有来自“users”的用户名的评论,但是,这些评论返回一个空数组。 所有表都有“id”作为主键和自动增量。
控制器:
$link = Link::with('page', 'tag', 'comments.user')->where('friendly_url', $id)->first();
return view('site.link', compact('link'));
型号(链接)
class Link extends Model
{
public function page()
{
return $this->belongsTo(Page::class);
}
public function tag()
{
return $this->belongsTo(Tag::class);
}
public function comments()
{
return $this->hasMany(Comment::class);
}
}
模型(评论)
class Comment extends Model
{
public function user(){
return $this->belongsTo(User::class);
}
}
查看:
@foreach($link->comments as $comment)
<li class="comment">
<h1>{{ $comment->user->name . $comment->user->lastname }}</h1>
<h2>{{ $comment->content }}</h2>
@endforeach
dd($link);
0 => Link {#291 ▼
#relations: array:3 [▼
"page" => Page {#295 ▶}
"tag" => Tag {#289 ▶}
"comments" => Collection {#292 ▼
#items: array:2 [▼
0 => Comment {#299 ▶}
1 => Comment {#301 ▶}
]
}
]
已解决:
$link->getRelation('comments');
但我也想显示 userProfile,但返回 0 ...
控制器:
$link = Link::where('friendly_url', $id)->with('page', 'tag', 'comments.user', 'comments.userProfile')->first();
dd($link);
#relations: array:3 [▼
"page" => Page {#296 ▶}
"tag" => Tag {#290 ▶}
"comments" => Collection {#293 ▼
#items: array:2 [▼
0 => Comment {#300 ▶}
1 => Comment {#302 ▼
#relations: array:2 [▼
"user" => User {#305 ▶}
"userProfile" => null
]
1、数据库:评论表中必须有link_id
和user_id
2、 Controller
:你应该使用with()
函数来获取comments
和user
$link = Link::with(['page', 'tag', 'comments' => function($query){
$query->with('user')
}])->where('friendly_url', $id)->first();
return view('site.link', compact('link'));
您可以使用dd($link)
检查关系数据
你可以试试。 你可以在下面评论让我支持你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.