Laravel: Ghép thêm cột vào kết quả truy vấn
Giả sử ta cần lấy đúng chỉ một Subject với các cột id, subjectName, articleId và articleUri, thì vấn đề là articleId và articleUri lại nằm ở bảng Article, mà giữa Subject và Article lại là bảng Topic, thì ta có thể làm như sau để đạt được yêu cầu:
Trước tiên ta lấy các cột id, subjectName và articleId:
$subjects=DB::table('subjects as a')->join('topics as b','a.id','b.subjectId')->join('articles as c','b.id','c.topicId')->select('a.id','subjectName','categoryId',DB::raw('min(c.id) as articleId'))->where('a.status','1')->where('b.status','1')->where('c.status','1')->groupBy('a.id','subjectName','categoryId')->orderBy('subjectRank')->get();
Sau đó ta ta ghép thêm cột articleUri vào kết quả ở trên như sau:
foreach ($subjects as $subject) {
$subject->articleUri=Article::findOrFail($subject->articleId)->articleUri;
}