Php 在控制器中创建数组并传递给外部函数
我试图从一个laravel控制器中获取现有/正在工作的代码,并从该控制器中现有的查询函数中创建一个客户数组 以下是有效的控制器代码部分: 控制器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
$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
记录的ID(如果您给它更多解释性的变量名,则效果更好):$d
$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()