使用原始 SQL 将单个字段添加到模型

Add a single field to model using raw SQL

我正在为 TYPO3 CMS 8.7.8 开发一个扩展。我正在使用 query->statement() 到 select 来自单个 table 的所有字段,加上来自另一个 table 的 1 个字段。我得到了一个 QueryResult 和正确的模型,我想向它们添加 1 个额外的字段。这可能吗?

您可以使用 ->statement(...) 方法执行 SQL 查询,并在其中使用正常的 JOIN 命令

来自documentation

$result = $query->statement('SELECT * FROM tx_sjroffers_domain_model_offer
WHERE title LIKE ? AND organization IN ?', array('%climbing%', array(33,47)));

所以你可以在任何你想要的table上做 JOIN(也来自文档的代码)

LEFT JOIN tx_blogexample_person
ON tx_blogexample_post.author = tx_blogexample_person.uid

但是您最终会得到来自 mysql 查询的原始数据。如果要将其转换为对象,请使用 Property Mapper

您可以在 sql statments 中使用 JOIN,如下所示。

$query = $this->createQuery();
$sql = 'SELECT single.*,another.field_anme AS fields_name
        FROM
           tx_single_table_name single
        JOIN
           tx_another_table_name another
        ON
           single.fields = another.uid
        WHERE
           O.deleted = 0
        AND O.hidden=0
        AND O.uid=' . $orderId;
return $query->statement($sql)->execute();