Extbase查询比较同一个表中的两个字段

时间:2016-09-14 18:41:38

标签: typo3 extbase

是否可以比较查询API中的两个数据库字段?例如,我想比较字段tstamp和crdate,如:

struct student_record
{
    string firstname, lastname;
    double age, income;
    int number_of_children;
    char sex;

    //operator declaration
    bool operator==(student_record const& other) const;

};

//operator definition
bool student_record::operator==(student_record const& other) const
{
    return (this->firstname == other.firstname &&
            this->lastname == other.lastname &&
            this->sex == other.sex); //you can compare other members if needed
}

在查询api中我找不到解决方案。获取所有记录并比较循环中的字段不是一种执行方式,因为这可能超过200万条记录(在我的实际案例中)。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我能想到的唯一方法(以及查询构建器支持)是直接提供语句。它看起来像这样:

$query = $contentElementRepository->createQuery();
$query->statement('SELECT * FROM tt_content WHERE tstamp > crdate');
$matchingContentElements = $query->execute();

这可能会破坏数据库抽象层,因此请谨慎使用。 statement()有第二个参数,您可以在其中放置参数,以防您在查询中需要一些用户输入。

也许有另一种方法可以做到这一点,我不知道,我自己真的很感兴趣。