[英]Get All the Rows from RIGHT TABLE - Eloquent Laravel
嗨,我需要來自Right Table的所有行,但是從LEFT JOINED TABLE中僅獲得最后一行。
表結構如下:
表:新聞
id | user_id(pk) | title | name
表格:news_comments
id | user_id(pk) | news_id(pk) | comment
我嘗試過如下:
News::select('news.*', 'users.username', 'users.avatar')
->selectRaw('news_comments.comment')
->join('users', 'users.id', '=', 'news.user_id')
->leftJoin('news_comments', function ($join) {
$join->on('news_comments.news_id', '=', 'news.id')
->on('news_comments.user_id', '=', 'users.id');
})->get();
但是此查詢僅返回最后一列。 我想要屬於每個新聞的所有評論。 我也嘗試過“戀愛關系”,但我認為在某些時候我錯了。 這個你能幫我嗎。 謝謝
select b.title,b.name,a.comment from news_comments a left join news b on a.user_id = b.user_id;
即使新聞中沒有相應的記錄,這也會從news_comment返回所有記錄。
我還沒有使用過laravel和雄辯,但仍然按照mysql的知識,當您將新聞表連接到news_comment表時,它將從新聞表中獲取所有記錄,並顯示來自news_commet表的最后一條評論,對應於新聞主鍵和NULL值(如果有評論)無法使用。 但是您需要的是來自news_comment的所有注釋,並從news表中顯示其相應的詳細信息,因此您必須使用如下所示的left join查詢,不確定它是否可以工作
DB::table('news_comments')
->leftJoin('news', 'news_comments.user_id', '=', 'news.user_id')
->get();
通過此查詢,您將獲得來自news_comment表的所有評論以及來自news表的詳細信息
我找到了方法。 我是通過以下方式做到的:
$news = News::select('news.*', 'users.username', 'users.avatar')
->selectRaw('(select count(*) from news_comments where news_comments.news_id = news.id) as comment_count')
->join('users', 'users.id', '=', 'news.user_id')
->get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.