Extbase在查询/存储库中添加计算字段

时间:2013-12-17 15:01:55

标签: typo3 extbase typo3-4.5

我有一个普通的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

(如果我必须编写自己的查询,我必须检查已删除,隐藏,启动时间,结束时间以检查记录是否现在处于活动状态)

我现在的问题是,将最新/最佳方法添加到我的扩展程序是什么?

2 个答案:

答案 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>