我想向控制器中的数据库添加()一条消息。到目前为止,这有效。
我有一个名为“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);
这是一个错误吗?
感谢您的帮助!
致以诚挚的问候
TYPO3 显然试图使用您的数组作为查询的一部分,但失败了。
最快的解决方法就是在
setter
(setMessageTags($array)
) 中序列化数组并在 getter
(getMessageTags()
) 中反序列化,在这种情况下,Extbase 会将其保存为字符串,但是您将保留可能性无需任何额外步骤即可使用数组。