2015-02-12 12 views
5
$time = new \DateTime('now'); 
$today = $time->format('Y-m-d'); 
$programs=Programs::find()->where(['close_date' >= $today])->all(); 

To jest kod dla dzisiejszych programów, których numer close_date jest większy niż today's date. Ja dostaję błąd:Jak porównać daty z bazy danych w Yii2

"Invalid Parameter -yii\base\InvalidParamException Operator '1' requires two operands".

+1

Nie trzeba budować daty takiej jak ta, można użyć 'new \ yii \ db \ Expression ('NOW()')' – soju

Odpowiedz

7

Jeśli chcesz napisać where stan jako tablicy kod powinien wyglądać następująco:

$programs = Programs::find()->where(['>=', 'close_date', $today])->all(); 

Sprawdź official documentation więcej szczegółów:

Additionally you can specify arbitrary operators as follows: A condition of ['>=', 'id', 10] will result in the following SQL expression: id >= 10 .

2

Albo jak ten kod:

$programs = Programs::find()->where('close_date >= :close_date', [':close_date' => $today])->all();