Laravel Левое соединение не возвращает все записи с предложением where - PullRequest
0 голосов
/ 28 мая 2020

Я не получаю все записи в левом соединении. мой основной запрос похож на SELECT cities.*, states.name as state FROM cities LEFT JOIN states ON cities.states_id = states.id его работает хорошо

мой laravel запрос похож на этот

      $all_city = DB::table('cities')
            ->leftjoin('states', 'cities.states_id', '=', 'states.id') 
            ->where([['states.name', 'LIKE', '%'.$state.'%'], ['cities.name', 'like', '%'.$name.'%']])
            ->select('cities.*', 'states.name as state')
            ->orderBy($sort_field, $sort_type)
            ->paginate($pagination);
            return response()->json($all_city);

Laravel, возвращающий только те записи, которые уникальны в обоих. И если я удалю из этого предложение where, он будет работать хорошо. Может кто-нибудь подскажет, что не так.

Заранее спасибо !!

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Вы можете просто сделать так:

$all_city = DB::table('cities')
                ->leftJoin('states', 'cities.states_id', '=', 'states.id') 
                ->where('states.name', 'like', '%'.$state.'%')
                ->where('cities.name', 'like', '%'.$name.'%')
                ->select('cities.*', 'states.name as state')
                ->orderBy($sort_field, $sort_type)
                ->paginate($pagination);
       return response()->json($all_city);
0 голосов
/ 28 мая 2020

Я думаю, проблема не в предложении соединения, а в предложении where ...

предложение where принимает три параметра: первый для столбца, второй для оператора и третий для значения, которое вы хотите сравнить .. .

, вы должны разделить это где:

->where([['states.name', 'LIKE', '%'.$state.'%'], ['cities.name', 'like', '%'.$name.'%']])

на:

->where('states.name','like','{$state}%')->where('cities.name','Like','%{$name}%');

в этой статье объясняется использование, например, где:

https://freek.dev/1182-searching-models-using-a-where-like-query-in-laravel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...