如何使用雄辩的方法将“ find(id)”与leftJoin结合

时间:2018-10-04 06:05:40

标签: eloquent

我有2个表,想从一个表中获取一行,并从另一表中获取一些数据。

我尝试过这个

$category = Category::find($id)
  ->leftJoin('photos', 'categories.cover_id', '=', 'photos.id')
  ->select('categories.*', 'photos.filename as cover')
  ->orderBy('sort', 'desc')
  ->get();

但是我只能从Category中获得所有数据,并且封面都是“空”。

我做错了什么?

格雷戈尔

1 个答案:

答案 0 :(得分:1)

有两种可能,一种是简单的使用数据库查询生成器

$category = DB::table('categories')
  ->select('categories.*','photos.filename as cover')
  ->join('photos', 'photos.id', '=', 'categories.cover_id')
  ->where('categories.id',$id)->get();

秒是 我不明白为什么我们需要find()方法来使用where条件,请检查以下内容是否适合您

$category = Category::leftJoin('photos', 'categories.cover_id', '=', 'photos.id')
 ->select('categories.*', 'photos.filename as cover')
 ->orderBy('sort', 'desc')
 ->where('categories.id',$id)
 ->first();

另一种方法是

 $category = Category::leftJoin('photos', function($join) {
  $join->on('categories.cover_id', '=', 'photos.id');
 })->where('categories.id',$id)
->select('categories.*', 'photos.filename as cover')->first();