我想WhereIn
在Eloquent查询中使用该函数,它需要一个PHP数组:
$users = DB::table('users')->whereIn('id', array(1, 2, 3))->get();
目前,数据正以这种格式传递到控制器中-
array(4) { [0]=> string(1) "1" [1]=> string(1) "4" [2]=> string(1) "6" }
我希望将以上数据转换为(1,4,6)
格式以利用该功能,但我不确定如何使用。
当前正在以下代码中使用它(卧室和property_type以上述格式显示):
$bedrooms = Input::get('bedrooms');
$property_type = Input::get('property_type');
$locations = Location::whereHas('coordinate', function ($q) use ($minlat, $maxlat,
$minlng, $maxlng, $bedrooms, $property_type)
{
$q->whereBetween('lat', array($minlat, $maxlat))
->whereBetween('lng', array($minlng, $maxlng))
->whereIn('bedrooms', '=', $bedrooms)
->whereIn('type', '=', $property_type);
})->lists('id');
这将返回Array to string conversion
错误。
我的Laravel版本是4.2。*-开发人员。
任何帮助将不胜感激。
不需要这样做。您是否尝试过不将它们转换为整数?如果您无法执行此操作,请发布您使用的是哪个版本的laravel,以便以后遇到此问题的人不要做不必要的工作。在laravel 4.2。*中,以下代码将返回正确的行。我刚刚测试过。
Route::get('/', function(){
$t = DB::table('users')->whereIn('id', array('1','2','3'))->get();
dd($t);
});
这也有效。
Route::get('/', function(){
$t = DB::table('users')->whereIn('id', array(1,2,3))->get();
dd($t);
});
此外,您有此代码
array(4) { [0]=> string(1) "1" [1]=> string(1) "4" [2]=> string(1) "6" }
和这段代码完全一样。刚刚使用var_dump显示了一个。
array("1", "4", "6")
除非您确实将未序列化的数组存储在数据库中,否则您将遇到很多其他问题。
编辑:控制器发布后
我不相信whereIn需要3个参数。您正在尝试在whereIn语句中将'='强制转换为数组,以删除此数组,它应该可以正常工作,或者至少会使Array出错。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句