Как объединить "find (id)" с leftJoin, используя eloquent - PullRequest
0 голосов
/ 04 октября 2018

У меня есть 2 таблицы, и я хотел бы получить из одной таблицы строку в сочетании с некоторыми данными из другой таблицы.

Я пробовал эту

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

Но я получаю только вседанные из категории и обложки "нулевые".

Что я делаю не так?

Грегор

1 Ответ

0 голосов
/ 04 октября 2018

Для этого есть две возможности, одна из которых - простое использование построителя запросов БД.

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

во-вторых, я не понимаю, зачем нам нужен метод find (), который мы можем использовать там, где условие, пожалуйста, проверьте ниже, еслиэто работает для вас

$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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...