我有2个表,想从一个表中获取一行,并从另一表中获取一些数据。
我尝试过这个
$category = Category::find($id)
->leftJoin('photos', 'categories.cover_id', '=', 'photos.id')
->select('categories.*', 'photos.filename as cover')
->orderBy('sort', 'desc')
->get();
但是我只能从Category中获得所有数据,并且封面都是“空”。
我做错了什么?
格雷戈尔
答案 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();