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

这里的问题可能是您将绑定不是作为方法的第二个参数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 回答