Laravel 4中的倍数数据库原始选择中的转义值

Posted

技术标签:

【中文标题】Laravel 4中的倍数数据库原始选择中的转义值【英文标题】:Escape values in multiples DB raw select in Laravel 4 【发布时间】:2016-04-17 03:54:45 【问题描述】:

在我的查询中,我有类似的内容:

->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

谁能帮帮我?

非常感谢

【问题讨论】:

【参考方案1】:

这里的问题可能是您将绑定不是作为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])
)  

【讨论】:

以上是关于Laravel 4中的倍数数据库原始选择中的转义值的主要内容,如果未能解决你的问题,请参考以下文章

原始查询中的 Laravel 选择计数

使用什么作为我的默认值来实现正确的laravel选择在哪里?

从 Laravel Blade 中的 JSON 中选择值

Laravel 4 - 根据用户数据库中的值显示不同的视图

用于原始 SQL 查询的等效 Laravel Eloquent

如何在 Laravel 的选择选项中使用“枚举”值?