繁体   English   中英

Laravel eloquent 关系返回空数组

[英]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_iduser_id

2、 Controller :你应该使用with()函数来获取commentsuser

    $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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM