0

私のクエリでは、次のようなものがあります。

->select('User.id', 'city', 'lat', 'lng', 'comment', 'Comments.created_at', 'disponibility',
        DB::raw("User.*, (count(Comments.user_id)) as note_count"),
        DB::raw("User.*, (3956 * 2 * ASIN(SQRT( POWER(SIN((:lat - lat) *  pi()/180 / 2), 2) +COS(:lat * pi()/180) * COS(lat * pi()/180) * POWER(SIN((:lng - lng) * pi()/180 / 2), 2) ))/0.621371192) as distance"),
        ["lat" => $lat, "lng" => $lng]
)    

なぜか、理由がわからないというエラーが表示されます

strtolower() expects parameter 1 to be string, array given

誰でも私を助けてくれますか?

とても有難い

4

1 に答える 1

0

ここでの問題はおそらく、バインディングをメソッドの 2 番目の引数としてではDB::rawなく、selectメソッドの引数として配置することです。

上記のコードの代わりに試してみてください:

->select('User.id', 'city', 'lat', 'lng', 'comment', 'Comments.created_at', 'disponibility',
        DB::raw("User.*, (count(Comments.user_id)) as note_count"),
        DB::raw("User.*, (3956 * 2 * ASIN(SQRT( POWER(SIN((:lat - lat) *  pi()/180 / 2), 2) +COS(:lat * pi()/180) * COS(lat * pi()/180) * POWER(SIN((:lng - lng) * pi()/180 / 2), 2) ))/0.621371192) as distance", ["lat" => $lat, "lng" => $lng])
)  
于 2016-01-16T13:30:17.720 に答える