Chcę informacji z jednej tabeli i jeśli są dopasowane informacje z innej tabeli, która również.Jak wykonać lewą zewnętrzną złączkę z Laravel?
to mój kod
$scoreObject = DB::table('responses')
->select('responses.id', 'responses.questions_id', 'responses.answer_id', 'responses.open_answer', 'responses.user_id', 'responses.scan_id',
'questions.question', 'questions.question_nr', 'questions.type', 'questions.totalsection_id',
'answers.id as answerID', 'answers.answer', 'answers.questions_id', 'answers.points'
)
->Join('answers as answers', 'responses.answer_id', '=', 'answers.id')
->Join('questions as questions', 'answers.questions_id', '=', 'questions.id')
->orderBy('questions.id', 'ASC')
->where('responses.scan_id', $scanid)
->where('responses.user_id', $userid)
->groupBy('questions.id')
->get();
Zwraca wszystkie odpowiedzi, które mają mecze z odpowiedzi (answers.questions_id questions.id "). niektóre odpowiedzi nie zostały dopasowane (ponieważ nie ma odpowiedzi), ale wciąż chcę odpowiedzi na te pytania.
Jak mogę uzyskać takie lewe sprzężenie zewnętrzne w laravel?
można spróbować określające dołączyć jako bycie ** lewe sprzężenie zewnętrzne **: '-> join ('odpowiedzi jako odpowiedzi', 'responses.answer_id', '=', 'answer.id', 'left outer')'. Ostatnim (opcjonalnym) parametrem metody 'join' jest' $ type', który, gdy nie zostanie określony, domyślnie przyjmuje wartość 'inner'. – Bogdan
@Bogdan To powinno działać. Napisz to jako odpowiedź;) – lukasgeiter
@Bogdan, rzeczywiście to działa! jeśli umieścisz to jako odpowiedź, mogę oznaczyć to jako poprawne. dziwne, że nie jest to lepiej udokumentowane tutaj http://laravel.com/docs/4.2/queries#sins. –