0

コントローラーのデータベースにメッセージを add() したい。それはこれまでのところうまくいきます。

配列を保存する「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);

それはバグですか?

ご協力いただきありがとうございます!

よろしくお願いします

4

1 に答える 1

1

TYPO3 は明らかにあなたの配列をクエリの一部として使用しようとしていますが、失敗しています。

これに対する最速の回避策は、( ) で配列setterをシリアル化し、 ( )setMessageTags($array)でシリアル化を解除することです。このような場合、Extbase は配列を文字列として保存しますが、追加の手順なしで配列を操作する可能性は維持されます。gettergetMessageTags()

于 2012-12-18T16:15:33.733 に答える