は、このコードを検討:MySQLは罰金だが、Laravelがそれを好きではない
$search = "John";
return User::whereRaw("(CONCAT(users.firstName, ' ', users.lastName) like '%$search%')")
->take(20)
->toSql();
これは、次のSQLコードを生成します。
select * from `users`
where (CONCAT(users.firstName, ' ', users.lastName) like '%John%')
limit 20
私はget()
に上toSql()
を変更する場合は、Laravelを返します関連するレコード。
これまでのところ、とても良いです。
私はJohn%Anthony
に$search
の値を変更して再度上記のコードを実行した場合次に、LaravelはこのSQLを生成します:
select * from `users`
where (CONCAT(users.firstName, ' ', users.lastName) like '%John%Anthony%')
limit 20
私は、MySQLに直接このクエリを実行すると、それが正常に動作し、関連を返します。行。しかし、Laravel(V5.2)は、私がget()
にtoSql()
を変更すると、私はこのエラーが出るので、それを好きにいないようです:
UnexpectedValueException in Response.php line 397:
The Response content must be a string or object implementing __toString(), "boolean" given.
にそれを変更してみてください: 'whereRaw( "?% 'のような、users.lastName) '(CONCAT(users.firstName、' %')"、[$検索]) ' –