Как обновить поле на основе другого поля в таблице заказов после 120 минут прошло? - PullRequest
1 голос
/ 26 апреля 2020

У меня есть стол заказов. Я хочу обновить поле сцены через 120 минут после того, как водитель получил заказ.

Это мой код и попытка:

$minuts =120 ;


        $orders = Order::where('stage',8)->where('driver_received_time','<',Carbon::now()->addMinutes($minuts))->get();
        $i = 0 ;
        foreach ($orders as $order)
        {

                $order->update(['stage'=>9]);
                $driver = Driver::find($order->driver_id);
                if ($driver->engaged == 1)
                {
                    $driver->engaged = 0;
                    $driver->save();
                }
                $i++;

        }
Orders Table:

------
orders
------
stage
driver_received_time

1 Ответ

2 голосов
/ 26 апреля 2020

Просто получите $orders, а затем для каждого $order, который вы вычисляете, минут пройдено:

 $orders = Order::where('stage',8)->get();
    $i = 0 ;
    foreach ($orders as $order)
    {
       $diff_in_minutes = Carbon::now()->diffInMinutes($order->driver_received_time);

        if($diff_in_minutes > 120){

            $order->update(['stage'=>9]);
            $driver = Driver::find($order->driver_id);
            if ($driver->engaged == 1)
            {
                $driver->engaged = 0;
                $driver->save();
            }
            $i++;
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...