我有一个普通的extbase扩展名。
在控制器中,我得到了所有记录:
$stuff = $this->jobRepository->findAll();
$this->view->assign('stuff', $stuff);
并在模板中显示它们:
<f:for each="{stuffs}" as="stuff">
{stuff.title} <br />
{stuff.category}
</f:for>
如果记录是最新的类别,我现在需要一个值为stuff.isnew
的新字段1
。
对此的SQL语句如下所示:
SELECT j2.isnew, j.* FROM `tx_stuff_domain_model_stuff` as j
left join
(SELECT max(crdate) as crdate, category, 1 as isnew FROM `tx_stuff_domain_model_stuff` group by category) as j2
on j.crdate=j2.crdate and j.category=j2.category
(如果我必须编写自己的查询,我必须检查已删除,隐藏,启动时间,结束时间以检查记录是否现在处于活动状态)
我现在的问题是,将最新/最佳方法添加到我的扩展程序是什么?
答案 0 :(得分:0)
我的解决方案是在作业存储库中实现方法findAll
。它首先使用父类中的方法findAll
来获取所有作业。通常的限制已经适用。然后它会走完最后的工作并标记最新的工作。
还应该可以创建一个自定义查询来达到目标,但这可能会让你有更多的工作。
答案 1 :(得分:0)
实际上,您根本不需要使用其他查询...虽然它始终是新记录的第一条记录,但您只需使用iterator
for
ViewHelper :
<f:for each="{stuffs}" as="stuff" iteration="iterator">
<f:if condition="{iterator.isFirst}">THIS ONE IS BRAND NEW STUFF! </f:if>
{stuff.title} <br />
{stuff.category}
</f:for>