我有3个实体,其中两个(使用Sonata Admins)在第三个到一对多关系中被引用,这些关系也有额外的字段。第1实体是基本管理记者的记者,第2实体是管理事件的事件。最后一个管理员是JournalistEvent,其中有记者表示他们想要报道活动,还包括额外的字段,如isApproved等。
我想在活动管理中创建一个自定义列表操作,以显示参加该活动的记者。我该怎么做呢?
我是否在事件管理员上创建自定义操作,还是在记者管理员上创建自定义查询以过滤参加活动的记者?我对前者有所了解,但后者似乎是创建解决方案的更好方法。
答案 0 :(得分:1)
您可以先列出事件,然后使用 sonata_type_collection 表单类型列出参加每个事件的记者。如果要过滤掉事件列表,则可能必须为此编写自定义查询。您可以将以下函数添加到管理类中。
public function createQuery($context = 'list')
{
$query = parent::createQuery($context);
$query
->orderBy($query->getRootAlias().".eventName", "ASC")
->andWhere(
$query->expr()->orX(
$query->expr()->eq($query->getRootAlias().".isActive", 1),
$query->expr()->isNull($query->getRootAlias().".isActive")));
return $query;
}
这只是一个示例查询。你必须修改它。希望它有所帮助。