Я хочу передать значения функции в запросе 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
Я получаю ошибку
Invalid argument supplied for foreach()
при передаче $ val. но выполняется, когда я передаю как
$program=DB::table('project')->whereIN('owner',['nithya.sreeraman','jaivignesh.parthiban','aadhil.ahmed','aarthe.sathyanaraya','abdulamjad.babu','khaja.hussain'])->pluck('project.name','project.code');
как передать значение функции в запросе laravel.






Здесь не так много информации, но, скорее всего, значение, возвращаемое getUser (), на самом деле не является массивом, поэтому whereIN () выдает ошибку.
Дважды проверьте, что вы получаете массив от getUser (). Это немного неуклюже, но быстро ....
$val=getUser();
echo('Is array: ' . is_array($val));
Если это массив, вы получите
Is array: 1
а если это не так
Is array: 0
[Дополнительно, на основе комментария ниже]
Поскольку возврат от getUser представляет собой строку, вам необходимо преобразовать ее в массив, чтобы передать ее в whereIN. В зависимости от вашей версии PHP есть два способа ....
Более старый PHP с использованием функции array ()
$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];
Затем вам нужно превратить его в массив, прежде чем передавать его в whereIN. Я обновил свой ответ.
Это строковое значение