0

我有一个正常的 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

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

我现在的问题是,将它添加到我的扩展中的最干净/最好的方法是什么?

4

2 回答 2

0

实际上你根本不需要使用额外的查询......虽然它总是第一条记录是新的,你可以只使用ViewHelperiterator的一个:for

<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>
于 2014-07-29T16:37:56.177 回答
0

findAll我的解决方案是在作业存储库中实现该方法。它将首先使用findAll父类中的方法来获取所有作业。通常的约束已经被应用。然后它将遍历生成的作业并标记最新的作业。

也应该可以创建一个自定义查询来达到您的目标,但这可能需要更多的工作。

于 2013-12-17T15:54:08.363 回答