迭代返回模型的最佳方法
Best way to iterate throught returned models
我有一个名为 Drug 的 table 基本上,当插入药物时,默认情况下需要 is_accepted 0,因此需要由管理员接受。
如果 is_accepted
值为 1
,则所有药物都会显示在网站上
我创建了一个命令 DeleteunacceptedDrugs
,每 12 小时 运行。
这条命令会获取所有is_accepted
值为0的药物,并查看它们的等待时间(处于等待状态的时间)
public function handle()
{
$drugs = Drug::where('is_accepted',0)->get();
for($i=0;$i<count($drugs);$i++){
if($drugs[$i]->getDuration() >= 12){
$drugs[$i]->delete();
}
}
}
这段代码工作正常,删除了所有等待时间 (current_date - created_at
) 高于 12 的药物,但代码对我来说看起来很难看,有没有办法通过药物数组进行更好的迭代方法
如有需要
public function getDuration(){
$start = Carbon::parse($this->created_at);
$end = now();
$hours = $end->diffInHours($start);
return $hours;
}
您可以直接在查询中进行比较:
Drug::where('is_accepted',0)->whereRaw('HOUR(TIMEDIFF(created_at, NOW())) > 11')->delete();
我有一个名为 Drug 的 table 基本上,当插入药物时,默认情况下需要 is_accepted 0,因此需要由管理员接受。
如果 is_accepted
值为 1
我创建了一个命令 DeleteunacceptedDrugs
,每 12 小时 运行。
这条命令会获取所有is_accepted
值为0的药物,并查看它们的等待时间(处于等待状态的时间)
public function handle()
{
$drugs = Drug::where('is_accepted',0)->get();
for($i=0;$i<count($drugs);$i++){
if($drugs[$i]->getDuration() >= 12){
$drugs[$i]->delete();
}
}
}
这段代码工作正常,删除了所有等待时间 (current_date - created_at
) 高于 12 的药物,但代码对我来说看起来很难看,有没有办法通过药物数组进行更好的迭代方法
如有需要
public function getDuration(){
$start = Carbon::parse($this->created_at);
$end = now();
$hours = $end->diffInHours($start);
return $hours;
}
您可以直接在查询中进行比较:
Drug::where('is_accepted',0)->whereRaw('HOUR(TIMEDIFF(created_at, NOW())) > 11')->delete();