私がやろうとしていること:
テーブル「teams」とプロパティ「weekday」を含むデータベースがあります。私は教義エンティティを生成し、今はSymfony2フォームを作成しています。
平日を含む配列をteamsテーブルのweekdaysプロパティに保存したいと思います。weekdaysプロパティはVARCHAR(255)であるため、文字列配列を含めることができるはずです。選択タイプを使用しますが、フォームを送信すると配列から文字列への変換エラーが発生します。
私がしていること:
私はSymfony2選択フォームタイプ(複数オプション付き)を使用しました。これは、チームが利用可能な平日を2、3日選択できるためです。最初にチームオブジェクトデータを取得しました。次に、次のようなフォームを作成します。
$builder = $this->createFormBuilder($team);
$form = $builder->add('weekday', 'choice', array(
'choices' => array(
'mon' => 'Monday',
'tue' => 'Tuesday',
'wed' => 'Wednesday',
'thu' => 'Thursday',
'fri' => 'Friday',
'sat' => 'Saturday',
'sun' => 'Sunday',
),
'multiple' => true,
'expanded' => true,
'label' => 'Day of the week',
'label_attr' => array('class' => 'control-label'),
'attr' => array('placeholder' => 'Day of the week', 'size' => '7')
))->getForm();
フォームが送信されたら、エンティティマネージャーを使用して変更をデータベースに保存します。
if ($request->isMethod('POST')) {
$form->bind($request);
if ($form->isValid()) {
// Save changes to db
$em = $this->getDoctrine()->getManager();
$em->persist($team);
$em->flush();
// Redirect to new canonical url
return $this->redirect($this->generateUrl('team_edit', array('nameCanonical' => $team->getNameCanonical(), 'code' => $team->getCode())));
}
エラー:
これはすべて私には100%有効なコードのようです。私はsymfony2でこのような他のフォームを作成しました。しかし、フォームで1つまたは複数の平日を選択して送信すると、次のエラーが発生します。
'UPDATE team SET weekday =?の実行中に例外が発生しました WHERE id =? ' with params {"1":["mon"、 "tue"、 "wed"]、 "2":6}:
注意:/Users/username/Dropbox/www/projectname/www/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php行1211の配列から文字列への変換
これを修正する方法が思いつかない。感謝します!私の完全なコードはこの要点で見ることができます。