Ich benutze Laravel Query Builder wie folgt.Laravel Query Builder bindet keine Werte
$col1 = Input::get('col1','');
$col2 = Input::get('col2','');
$result = DB::table('table1')
->select('id', 'col1', 'col2', 'col3')
->whereRaw("col1 like '%?%'", [$col1])
->whereRaw("col2 like '%?%'", [$col2])
->orderBy($orderBy, $orderType) //orderBy=col1, ordeyType=ASC
->skip($ofset)->take($limit) //$ofser=0, $limit=10
->get();
Ich bekomme nichts. Wenn ich die Funktion toSql() verwende. Ich bekomme diese SQL wie diese
select `id`, `col1`, `col2`, `col3`
from `table1` where col1 like '%?%' and col2 like '%?%'
order by `col1` ASC limit 10 offset 0
Die Fragezeichen sollten nicht da sein. Es muss sie durch die Werte ersetzen. Ich habe diesen Code zum Debuggen verwendet.
Log::info(var_export(DB::getQueryLog(), true));
Die Protokolle sehen aus wie dieses
2 =>
array (
'query' => 'select `id`, `col1`, `col2`, `col3` from `table1` where col1 like \'%?%\' and col2 like \'%?%\' order by `col1` ASC limit 10 offset 0',
'bindings' =>
array (
0 => 'k',
1 => '',
),
'time' => 25.71,
Ich denke Bindungen nicht pr funktioniert ich etwas falsch tue. Denn wenn ich diesen Code in der Datenbank versuche, funktioniert es. (Außerdem möchte ich die tatsächliche SQL erhalten, die an die Datenbank senden. Wie kann ich das tun?)
select `id`, `col1`, `col2`, `col3` from `table1`
where col1 like '%k%' and col2 like '%%'
order by `col1` ASC limit 10 offset 0
dank workd es – muhammedea
Ich wünschte, ich könnte diese mehr upvote. Es gibt so viele falsche Beispiele, ich wollte mir gerade das Handgelenk schneiden – Toskan