доктрина findby магическое нулевое значение - PullRequest
3 голосов
/ 06 октября 2010

Мне интересно, есть ли способ использовать магический метод доктрины для поиска нулевых значений.Например:

Doctrine::getTable('myClass')->findByDeletedAt(null);

По сути, я хочу вернуть все записи, которые не были удалены.Я пробовал вышеупомянутое, но это, кажется, не работает.

Есть идеи?

Ответы [ 4 ]

8 голосов
/ 31 января 2013

Попытка этого дает мне ошибку:

Исправляемая фатальная ошибка: аргумент 1, переданный в Doctrine \ ORM \ EntityRepository :: findBy (), должен быть массивом, строка которого задана

Так что это работает для меня:

$repository->findBy(array('date_field' => null));
2 голосов
/ 06 октября 2010

На самом деле, я думаю, что я пытался представить Это можно сделать так:

Doctrine::getTable('myClass')->findBy('deleted_at',null);
0 голосов
/ 01 февраля 2013

Я знаю, что это старый, но предоставленные решения не являются правильными для Doctrine 1.2.x

Когда вы используете такие функции, как:

Doctrine::getTable('YourClass')->findByDeleted_at(null); //he want to get NOT DELETED rows!

Doctrine выдает ошибку, которая: «Необходимо указать значение для findBy» , поскольку null представляет угрозу, поскольку не передано значение ;

->findBy('deleted_at', null) также вызывает исключение.

->findBy('deleted_at','NULL') либо неверен, так как переведен на SQL: ... WHERE deleted_at = 'NULL';

Синтаксис SQL для такого запроса должен выглядеть следующим образом:

... WHERE deleted_at IS NULL;

Таким образом, решение заключается в использовании метода ->findBySql():

Doctrine::getTable('YourClass')->findBySql('deleted_at IS NULL', array());

* третьим аргументом может быть Hydration_Mode.

Надеюсь, что это кому-нибудь поможет ...

0 голосов
/ 03 февраля 2011

Я знаю, что это старо, но ваша первая попытка была неверной. Для поля «selected_at» вы должны были сделать это:

Doctrine::getTable('YourClass')->findByDeleted_at($val);

Обратите внимание, что я только заглавная 1-я буква поля удален.

...