質問 > フロント機能 > データベースのテーブルを関連付けたい? |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
Bongsu |
投稿日時: 2018/2/26 16:03
対応状況: 開発中
|
半人前 登録日: 2018/2/15 居住地: 投稿: 29 |
データベースのテーブルを関連付けたい? 以前
メールからのフォームデータをDBテーブルに自動保存させたい。で DBテーブルへの保存方法を教えていただきました。 これを ログインした 会員様じゃないとメールを送れない メールフォームにしたいと思っています。 コントローラに if ($app->isGranted('ROLE_USER')) { $user = $app['user']; $builder->setData( array( 'name01' => $user->getName01(), 'name02' => $user->getName02(), 'email' => $user->getEmail(), ) ); } を追加すると メールフォームに会員様のNameとEmailの 情報が自動でアップされます。 しかし DBテーブルへの保存をすべく フォームType.phpに教えて頂いた public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'Plugin\Bongsutes\Entity\Bongsutes', )); } を追加すると The form's view data is expected to be an instance of class Plugin\Bongsutes\Entity\Bongsutes, but is a(n) array. You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms a(n) array to an instance of Plugin\Bongsutes\Entity\Bongsutes. とエラーが出てしまいます。 ネットで調べると { $builder ->add('file', FileType::class, array('data_class' => null)) ->add('coverFile', FileType::class, array('data_class' => null)) ->add('coverFile', FileType::class, array('data_class' => null,'required' => false)) ->add('songName', TextType::class) ->add('songAuthor', TextType::class); } の様に ('data_class' => null))を追加すればいいと書いてありましたがダメでした。 まだ テスト上でのエラーなので 本番環境では これから Entiry などのマイグレーションを行います。 エラーの意味は全くわからないのですが、 エラーだけを見て それを修正していけばいいのか? それとも Entityのマイグレーションの時に Plugin.****.Entity.****.dcm.ymlに manyToOne: oneToMany: などを使ってCustomer(会員情報)と今回 マイグレーションするEntityを 関連付けるのでしょうか? manyToOne:も oneToMany:も まだ わからのですが これから勉強しようと 思っています。 ただ 方向性が分からないです。 メールフォームの内容を会員様に関連付けて そのNameやEmailも DBテーブルに保存する。 どの様にすればいいのでしょうか? 何度も厚かましいと思いますが、 どなたか 教えていただければ、ありがたいです。 宜しくお願い致します。 |
umebius |
投稿日時: 2018/2/26 16:09
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: データベースのテーブルを関連付けたい? エラーについて説明すると
$builder->setData( array( 'name01' => $user->getName01(), 'name02' => $user->getName02(), 'email' => $user->getEmail(), ) ); というようにフォームに対してarrayをsetDataしてますよね。 にもかかわらず、 $resolver->setDefaults(array( 'data_class' => 'Plugin\Bongsutes\Entity\Bongsutes', ));というように Plugin\Bongsutes\Entity\Bongsutesというクラスをこのフォームのデータの型として指定しています。 これが矛盾するために起こっているエラーです。
|
umebius |
投稿日時: 2018/2/26 16:12
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: データベースのテーブルを関連付けたい? Formのデータにエンティティを使用しているのはフロントよりも管理画面が非常に多いです。
問い合わせフォームだけでなく、管理画面のフォームやコントローラもみて真似てみるのが良いかもしれません。 |
Bongsu |
投稿日時: 2018/2/27 10:29
対応状況: −−−
|
半人前 登録日: 2018/2/15 居住地: 投稿: 29 |
Re: データベースのテーブルを関連付けたい? 返答 ありがとうございます。
ご指導をして頂いた通りに管理画面を参考にして頑張って見ます。 |
umebius |
投稿日時: 2018/2/27 20:48
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: データベースのテーブルを関連付けたい? 頑張ってください!
また不明点あればぜひご投稿ください。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |