TYPO3 Extbase:操作数应包含 1 列:

问题描述 投票:0回答:1

我想向控制器中的数据库添加()一条消息。到目前为止,这有效。

我有一个名为“message_tags”的列,我在其中保存一个数组。

数组是:

array(5 items)
0 => 'dfsdfsd' (7 chars)
1 => 'dsfsdf' (6 chars)
2 => 'sdfdsf' (6 chars)
3 => 'asd' (3 chars)
4 => 'google' (6 chars)

现在,TYPO3 给我抛出一个错误:

Operand should contain 1 column(s): UPDATE   
tx_xxx_domain_model_message SET message_text='dfdsfsdf', 
message_tags=('dfsdfsd','dsfsdf','sdfdsf','asd','google'), mobile_os=('android'), 
tstamp='1355846301', sys_language_uid=NULL WHERE uid='73'

数组是在我的控制器中构造的(我知道这距离良好的编码还很远):

foreach($messageTagsArray as $key => $value) {
              $mergedTagArrayValues[] = $value;
            }
            foreach($storedTagsList as $key => $value) {
              $storedTagsListValues[] = $value;
            }
            $mergedTagArray = array_merge($mergedTagArrayValues, $storedTagsListValues);
            $mergedTagArray = array_unique($mergedTagArray);

            $message->setMessageTags($mergedTagArray);

这是一个错误吗?

感谢您的帮助!

致以诚挚的问候

php sql typo3 extbase operands
1个回答
1
投票

TYPO3 显然试图使用您的数组作为查询的一部分,但失败了。

最快的解决方法就是在

setter
(
setMessageTags($array)
) 中序列化数组并在
getter
(
getMessageTags()
) 中反序列化,在这种情况下,Extbase 会将其保存为字符串,但是您将保留可能性无需任何额外步骤即可使用数组。

© www.soinside.com 2019 - 2024. All rights reserved.