我有一个查询
SELECT * FROM `my_table`
WHERE DATEDIFF(CURDATE(), CAST(from_unixtime(tstamp) AS DATE)) >=365
如何转换为存储库方法
$query = $this->createQuery();
$query->statement();
$query->matching(
$query->greaterThanOrEqual(????, 365)
);
return $query->execute();
答案 0 :(得分:3)
您可以使用PHP计算该日期:
$timestamp = time() - 86400 * 365;
$query->matching(
$query->lessThanOrEqual('tstamp', $timestamp )
);
答案 1 :(得分:1)
这在extbase中不可能直接实现。但是我看到了两个可能的选项
变体1
使用本机SQL查询返回记录的uid并使用extbase查询中的那些:
$query->in('uid', $idList)
变体2
可以操纵查询,但这是一个非常大的开销。您可以查看https://github.com/TYPO3-extensions/news/blob/master/Classes/Domain/Repository/AbstractDemandedRepository.php#L90以获得一个主意。