Ze względów złożonego schematu & biblioteka, która wymaga zarówno Płynna lub Eloquent być wykorzystane (nie tylko surowe DB :: query()), trzeba utworzyć:laravel Use złożone w stan JOIN z Fluent
LEFT JOIN `camp_to_cabin`
ON `camper_to_cabin`.`cabin_id` = `camp_to_cabin`.`cabin_id`
AND `camp_to_cabin`.`camp_id` =1 OR `camp_to_cabin`.`camp_id` IS NULL
jako klauzula dołączenia; Próbowałem wywołania zwrotne & wszystko inne, co mogę myśleć, ale nie można uzyskać właściwej składni do generowania.
Próbowałem:
->left_join('camp_to_cabin', function ($join){
$join->on('camper_to_cabin.cabin_id', '=', 'camp_to_cabin.cabin_id')
$join->on('camp_to_cabin.camp_id', '=', 1)
$join->on('camp_to_cabin.camp_id', '=', null)
})
ale stawia odwrócone, pojedyncze apostrofy wokół mojego 1 & zerową (wiem zerowy bit nie jest w porządku - eksperymenty), że nie mogę pozbyć; w przeciwnym razie wygląda całkiem blisko
Każda pomoc?
TIA
Dzięki, Phil - ostateczna odpowiedź brzmi:
->left_join('camp_to_cabin', function ($join) use ($id){
$join->on('camper_to_cabin.cabin_id', '=', 'camp_to_cabin.cabin_id');
$join->on('camper_to_cabin.cabin_id', '=', DB::raw($id));
$join->or_on('camper_to_cabin.cabin_id', 'IS', DB::raw('NULL'));
})
przykro - to była moja literówka (Zrobię) To nie działa – jmadsen
Ach, wierzę, trzeba 'DB :: raw()', zobacz moje zaktualizowaną odpowiedź. –
piękne! Sprawdzę to później i wrócę, żeby ci powiedzieć - dziękuję bardzo. – jmadsen