Узнать текущее время в select в laravel

#laravel #eloquent #laravel-8

Вопрос:

 $product = Product::select('id', 'name', 'status',DB::raw('date('d-m-y') as dateCurrent' ))
    ->whereDate('status', 3)
    ->get()
    ->toArray();
 

Результат dateCurrent нулевой :

 Array
(
    [0] => Array
        (
            [id] => 4
            [name] => 'Iphone'
            [dateCurrent] => null
        )

    [1] => Array
        (
            [id] => 5
            [name] => 'samsung'
            [dateCurrent] => null
        )
)
 

Я хочу получить текущее время прямо в select. Есть ли какой-нибудь способ получить его? Спасибо

Комментарии:

1. Есть ли какие-либо проблемы, с которыми вы сталкиваетесь в этом коде?

2. Почему у вас есть даты в (d-m-y) и не в ('Y-m-d') ?

Ответ №1:

 date('d-m-y')
 

похоже на встроенную функцию php
, если вы хотите использовать время бд
, вы можете использовать функцию NOW ()
, и если вы используете время бд

 $product = Product::select('id', 'name', 'status', DB::raw('NOW() AS dateCurrent'))
                            ->whereDate('status', 3)
                            ->get()
                            ->toArray();
 

но вам нужно серверное время php

 $product = Product::select(
'id', 'name',
'status', DB::raw(sprintf('%s AS dateCurrent', date('d-m-y'))))
                            ->whereDate('status', 3)
                            ->get()
                            ->toArray();
 

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_now