DB Laravel同时获得和第一名



我只想显示来自"链接,标签,页面","->first(("的一个结果,但是,我想显示来自"评论","->get(("的多个结果,将其分成一个数组,然后发送到查看,我该怎么做?

    $link = DB::table('links')
            ->join('tags', 'tags.id', 'links.tag')
            ->join('pages', 'pages.id', '=', 'links.page_id')
            ->leftJoin('comments', 'comments.link_id', '=', 'links.id')
            ->select('links.photo', 'links.id', 'links.description', 'links.country', 'links.url', 'links.suggestions', 'links.shares', 'links.friendly_url', 'links.page_id', 'links.sponsored', 'links.clicks', 'links.title', 'tags.color', 'tags.id as tag_id', 'tags.name', 'pages.name as p_name', 'pages.description as p_description', 'pages.id as p_id', 'pages.followers', 'pages.links', 'pages.friendly_url as p_friendly_url', 'pages.photo as p_photo')
            ->where('links.friendly_url', $id)
            ->first();

    return view('site.link', compact('link'));

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 ▶}
          ]
        }
      ]
你可以

使用Eloquent。定义关系:

public function page()
{
    return $this->belongsTo(Page::class);
}
public function tag()
{
    return $this->belongsTo(Tag::class, 'tag');
}
public function comments()
{
    return $this->hasMany(Comment::class);
}

并这样做:

Link::with('page', 'tag', 'comments')->where('friendly_url', $id)->first()

最新更新