2016-06-20 8 views
0

Ich versuche, diese Abfrage in Laravel AbfrageAbfrage aus zwei Tabellen Laravel mit mehreren Bedingungen

SELECT table1. * , table2. * 
FROM table1 
LEFT JOIN table2 ON 
(table1.id = table2.id 
AND (
     table2.field = '' 
     OR table2.field >= '0' 
    ) 
) 
WHERE table.id =id 

I Problem haben, zu schreiben mit, wie Innenteil hinzuzufügen AND (...) auf die Abfrage? Hier ist, was ich bisher

$query = Table::select(DB::Raw('table1.*, table2.*')) 
->leftJoin('table2', function($join) { 
    $join->on('table1.id', '=', 'table2.id') 

    ->where('table2.field', '=', '') 
    ->orwhere('table2.field', '=', '50'); 
    }) 
->where('table1.id', BaseController::getCurrentUser()->id) 
->get(); 

Ich vermisse, wo und wie AND...

+0

Kleine Korrektur wird nach dieser Aussage eines semicolen wie: $ query -> where ('table2.field', '') -> oderWhere ('table2.field', 50); –

Antwort

2

Haben Sie den AND Teil als Teil ON haben müssen hinzufügen? Wenn Sie es auf den WHERE Teil Ihrer Abfrage bewegen könnten Sie so etwas wie

$query = Table::select('table1.*', 'table2.*') 
->leftJoin('table2', 'table1.id', '=', 'table2.id') 
->where('table1.id', BaseController::getCurrentUser()->id) 
->where(function ($query){ 
    $query->where('table2.field', '') 
    ->orWhere('table2.field', 50) 
}) 

Das Ergebnis sollte das gleiche sein wie von Ihrer ursprünglichen Abfrage verwenden

Verwandte Themen