【问题标题】:Best way to iterate throught returned models迭代返回模型的最佳方法
【发布时间】:2021-08-31 09:46:17
【问题描述】:

我有一个名为 Drug 的表,基本上当插入药物时,默认情况下它需要 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;
        }

【问题讨论】:

    标签: php laravel eloquent laravel-artisan laravel-query-builder


    【解决方案1】:

    您可以直接在查询中做差异:

    Drug::where('is_accepted',0)->whereRaw('HOUR(TIMEDIFF(created_at, NOW())) > 11')->delete();
    

    【讨论】:

      猜你喜欢
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 2020-10-05
      • 2011-06-16
      相关资源
      最近更新 更多