Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 使用原始SQL向模型添加单个字段_Typo3_Datamapper_Typo3 8.x_Typo3 8.7.x - Fatal编程技术网

Typo3 使用原始SQL向模型添加单个字段

Typo3 使用原始SQL向模型添加单个字段,typo3,datamapper,typo3-8.x,typo3-8.7.x,Typo3,Datamapper,Typo3 8.x,Typo3 8.7.x,我正在为TYPO3 CMS 8.7.8开发一个扩展。我使用query->statement()从一个表中选择所有字段,再从另一个表中选择一个字段。我得到了一个带有适当模型的QueryResult,我想在其中添加1个额外字段。这可能吗?您可以使用->语句(…)方法执行SQL查询,在这种情况下,可以使用普通的JOIN命令 从 因此,您可以在任何需要的表上执行联接(也可以从文档中编写代码) 但最终将得到mysql查询中的原始数据。如果要将其转换为对象,请使用可以在sql语句中使用的JOIN,如下所示

我正在为TYPO3 CMS 8.7.8开发一个扩展。我使用
query->statement()
从一个表中选择所有字段,再从另一个表中选择一个字段。我得到了一个带有适当模型的
QueryResult
,我想在其中添加1个额外字段。这可能吗?

您可以使用
->语句(…)
方法执行SQL查询,在这种情况下,可以使用普通的
JOIN
命令

因此,您可以在任何需要的表上执行联接(也可以从文档中编写代码)


但最终将得到mysql查询中的原始数据。如果要将其转换为对象,请使用可以在sql
语句中使用的
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();

我的问题是如何在模型上获得额外的场。我已经设法更改了模型以适应额外的字段,并为字段添加了TCA配置。现在一切正常了。@StephanRodemeier然后您可以创建自己的TypeConverter,并将该额外字段添加到返回的模型中。看看PersistentObjectConverter和类似产品是如何实现的。
LEFT JOIN tx_blogexample_person
ON tx_blogexample_post.author = tx_blogexample_person.uid
$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();