У меня уже есть база данных, и я не могу ее изменить. В этой базе данных я использую «мягкое удаление»: вместо фактического удаления записи я просто изменяю флаг (например, настройка del=1
).
Я не использую шаблон GEDMO (SoftDelete), но мне нужна та же функциональность. В настоящее время, когда я использую функции QueryBuilder / find, они возвращают записи с del=1
, Та же идея о функциях ассоциаций; Я должен проверять каждый раз, если del=0
,
Есть ли способ автоматически отфильтровывать записи с флагом del=1
разве это явно не запрошено?
вы, вероятно, можете использовать фильтры доктрины:
http://doctrine-orm.readthedocs.org/en/latest/reference/filters.html
http://www.michaelperrin.fr/2014/07/25/doctrine-filters/
отключить:
Другая перспектива — сделать ваш код более читабельным и, возможно, более простым, выполнив что-то вроде этого:
$entity = $em->getRepository("MyBundle:Entity")->findBy(['del' => 0]);
Это добавляет очень мало кода и очевидно для любого читателя, что вы делаете.
В качестве альтернативы, если ваша база данных & разрешения привилегий (например, root в MySQL) вы можете создать представление, которое содержит только del=0
записей. Для MySQL вот СОЗДАТЬ ВИД doc. Учение разрешает использование взглядов.