まず、いくつかの文字列をコントローラーに送信するフォームがあります。このコントローラーは、最初にデータベース内の対応するエンティティにアクセスし、次にそのエンティティの文字列を更新しようとします。
次のようにパラメーターを取得します。
$message = $request->request->get('message');
テスト目的で、次の行に入れました:
echo '<script>alert("the message is: ' . $message . '");</script>';
それは予想されるメッセージを警告します->だから私は先に進み、 $message 変数が実際にコントローラーに正しく「到達」すると仮定します。
次に、エンティティ情報を更新します。
$entity->setMessage($message);
これにより、データベース内の値が空になります。エラーもサーバーのクラッシュもありません$message
。運命に到達することはありません。
私の次の仮定は、エンティティ関数 setMessage に問題がある可能性があるため、すべての可能な組み合わせで可能な限り (文字列) キャストを使用しました。
次に、var_dump
あらゆる場所に を配置します。ここでもすべての組み合わせが可能です。そして実体属性のメッセージまで出す"string(x)" xxxx
だから私は「まあそれは正しく割り当てられる」と思った
これまでのところ、おそらく忘れていたと思います
$em->persist($entity);
$em->flush();
でもそれも忘れず入れたようです。
そこで、新しい試みを考えました。$test という名前の新しい変数を作成し、それにランダムな文字列を割り当てて、これで setMessage を呼び出しました。やった。順調に持続しました。
要約すると、正しいエンティティが取得され、文字列が読み込まれ、コントローラー内に実際に正しく存在し、エンティティ メソッドが完全に機能し、エンティティ マネージャーが永続化され、希望どおりにフラッシュされます。
ここで何が問題なのですか?$test
私の文字列と$message
私が判断できる文字列の唯一の違いは、それ$message
がリクエストに由来することです。この問題に関する私の知識は限られているようです。