在laravel查询中传递函数值

时间:2018-06-26 09:04:53

标签: php laravel laravel-5 laravel-5.3

我想在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查询中传递函数值。

1 个答案:

答案 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];