Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在控制器中创建数组并传递给外部函数_Php_Laravel - Fatal编程技术网

Php 在控制器中创建数组并传递给外部函数

Php 在控制器中创建数组并传递给外部函数,php,laravel,Php,Laravel,我试图从一个laravel控制器中获取现有/正在工作的代码,并从该控制器中现有的查询函数中创建一个客户数组 以下是有效的控制器代码部分: 控制器 $d->createdAt = new \DateTime($d->created_at); $deadline = Carbon::now()->subMonths(2); if($d->nextDate <= $now && $d->createdAt > $deadline &&a

我试图从一个laravel控制器中获取现有/正在工作的代码,并从该控制器中现有的查询函数中创建一个客户数组

以下是有效的控制器代码部分:

控制器

$d->createdAt = new \DateTime($d->created_at);
$deadline = Carbon::now()->subMonths(2);
if($d->nextDate <= $now && $d->createdAt > $deadline && $d->status != 'exempt'){
    $d->status = 'priority';
}
基本上,在控制器中的代码块之后,我想创建一个包含所有返回客户编号(即“优先级”状态)的数组,并将该数组传递给函数,这样我就可以说“在不在此数组中的任何客户上运行此findActive查询”

这里的想法是将工作代码扩展到一个新文件中,该文件具有相同的突出显示功能,但使用不同的逻辑。我只是不确定创建数组的最佳方法,以便将其正确地传递到函数中


如何从控制器代码块中的返回值创建数组,并在activeCust.php中的函数查询中使用数组作为“NOT in”?

因为您的问题不清楚,我有一个假设。如果不正确,我将删除答案,以便您可以重新构造您的问题:

  • 在该逻辑中,即
    if
    语句中,您希望填充一个数组,该数组将保留
    $d
    记录的ID(如果您给它更多解释性的变量名,则效果更好):
如果我的假设正确,您可以初始化数组,然后在条件块中用其他ID填充它,如下所示:

$ids = [];

if($d->nextDate <= $now && $d->createdAt > $deadline && $d->status != 'exempt'){
    $d->status = 'priority';
    $ids[] = $d->custNum
}
....
SomeClass::findActive($ids); //calls the findActive()
$ids=[];
如果($d->nextDate createdAt>$deadline&&$d->status!=“豁免”){
$d->status='priority';
$ids[]=$d->custNum
}
....
SomeClass::findActive($id)//调用findActive()函数
一个观察就是为什么在可以使用雄辩的甚至是QueryBuilders的whereNotIn('something',[1,2,3])时使用查询字符串例如


你的问题是什么,请解释清楚和简短我觉得它解释得很清楚,但看看我的最后一句话。我的控制器代码正常工作,我的函数查询一般工作。我只想从控制器代码块的结果创建一个数组,并将其传递给函数查询您首先在哪里调用
findActive()
函数?函数调用和该数组在哪里?我还没有调用函数,我还在一个外部文件中构建该函数,但它包含在控制器中。对于任何混淆,我深表歉意,但是是的,这看起来很正确!在这种情况下,我是否可以保持函数中的查询不变?或者我想我必须让它使用$ids签名,也就是说,您在
findActive()
声明中用作参数的名称并不重要,我使用了
$ids
作为示例。但在你的例子中,它只需要是一个数组或逗号分隔的字符串?。但是,如果您将它与原始查询字符串一起使用,则需要使用
内爆(',',$id)
使其成为字符串。啊,我明白了。我将按原样使用它,但在我的函数中,我将使$custNum=内爆(“,”,$ids);如果这适合您,但由于您使用Laravel,我强烈建议您利用雄辩或查询生成器:请参阅:
$ids = [];

if($d->nextDate <= $now && $d->createdAt > $deadline && $d->status != 'exempt'){
    $d->status = 'priority';
    $ids[] = $d->custNum
}
....
SomeClass::findActive($ids); //calls the findActive()