我想在laravel查询中传递函数值。我有一个函数getUser
返回了$val=['nithya.sreeraman','jaivignesh.parthiban','aadhil.ahmed','aarthe.sathyanaraya','abdulamjad.babu','khaja.hussain']
function getUser() {
$reportees=array();
try{
global $reportee_list;
global $reportees;
/*stuff*/
return $reportees;
}
catch{
}
}
$val=getUser();
// print_r($val);
$program=DB::table('project')->whereIN('owner',$val)->pluck('project.name','project.code'); //I want to pass $val in this query
我遇到错误
为foreach()提供的参数无效
在传递$ val时,但在我作为as传递时执行
$program=DB::table('project')->whereIN('owner',['nithya.sreeraman','jaivignesh.parthiban','aadhil.ahmed','aarthe.sathyanaraya','abdulamjad.babu','khaja.hussain'])->pluck('project.name','project.code');
如何在laravel查询中传递函数值。
答案 0 :(得分:0)
这里没有很多信息,但是似乎getUser()的返回值实际上不是数组,这就是whereIN()引发错误的原因。
再次检查您是否从getUser()获取数组。这有点笨重,但是很快。...
$val=getUser();
echo('Is array: ' . is_array($val));
如果是数组,则会得到
是数组:1
,如果不是
是数组:0
[其他,根据下面的评论]
由于getUser返回的是一个字符串,因此您需要将其强制转换为数组以将其传递给whereIN。有两种方法,具体取决于您的PHP版本。...
使用array()函数的旧PHP
$program=DB::table('project')->whereIN('owner',array($val))->pluck('project.name','project.code')
PHP 5.4+使用短数组语法[]
$program=DB::table('project')->whereIN('owner',[$val])->pluck('project.name','project.code')
或在合适的情况下从getUser()返回一个数组
return [$reportees];