В Соната у меня есть администратор бронирования.Sonata - Как создать фильтр на динамическом свойстве?
В этом Admin У меня есть какое-то поле, хранящееся в базе данных, например, «фамилия», «первое имя» или «ref». У меня также есть поле «статус», которое не хранится в БД, оно определено как это в моем Суперинте.
public function getState(){
if (/*Complex condition*/)
return 'canceled_not_refund';
else if (/*Complex condition*/)
return 'canceled';
else if (/*Complex condition*/)
return "no-payment";
else if (/*Complex condition*/)
return "partial_payment";
else if (/*Complex condition*/)
return "ok";
else if(/*Complex condition*/)
return "ended";
}
Я попытался определить фильтр на поле «состояние», но я получаю:
[Semantical Error] line 0, col 87 near 'state = :sta': Error: Class MyBundle\Entity\Booking has no field or association named state
Есть ли способ определить этот вид фильтра в Sonata администратора?
За помощь!
Я не вижу никакого способа. Сонате пришлось бы загружать все объекты в память и фильтровать их. Все [методы фильтрации] (https://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/filter_field_definition.html#filter-field-definition) работают с QueryBuilder. – Lumen