私は 'users'テーブルと 'activation_tokens'テーブルを持っています。私は、ユーザーモデルでhasOne(ActivationToken :: class)という関係を持っています。Laravel大量割り当て挿入新しいレコードcreate()代替?
これはすべて問題なく動作しています。今私は、ユーザーを作成するときにトークンを作成したいと思います。だから私は
$user->ActivationToken()->create(array('token'=>'RANDOM_STRING"));
を呼び出すこれはすべての良いですが、私は大量の割り当てエラーを打っています。 I do not 'token'を塗りつぶしに設定したい。
代わりに、私は大丈夫ですが、それは、クエリでのuser_idフィールドを設定しません
$activationToken = new ActivationToken();
$activationToken->token = 'RANDOM_STRING";
$activationToken->save();
を試してみてください。私は手動で設定することでそれを行うことができると思います$activationToken->user_id = $user->id;
ORMはドキュメントが広告するように見える限り、これを自動的に処理する必要があるので、これは間違っています。だから私は何か間違っていると思う?
これを正しく行う方法を理解できませんでした。何かヒント?
ありがとうございます!
_ORM way_に移動する場合は、一括割り当てのためにトークンを 'fillable'配列に設定する必要があります。それ以外の場合は、 '$ activationToken-> user_id = $ user-> id'の方法で手動で設定する必要があります。あなたが行くことができる2つの方法。なぜフィールドを 'fillable'に設定したいのですか? – codedge
ORMを使用できるようにすべてをfillableに設定しなければならない場合は、fillable/guardedの目的を無効にしませんか?この全質量割り当てに欠陥のある概念がないかぎり?とにかく誰がランダムなhttpリクエストからすべての値をデータベースクエリに割り当てるか。 :) 引数user_idを取り、トークンを挿入するActivationTokenクラスで関数を作成するほうがクリーンではないでしょうか?それから、ActivationToken :: inserToken($ user-> id)を呼び出すだけで済みます。 –
@codedge私が投稿した回答をご覧ください。列をfillableに追加することなく、表を一括割り当てで更新する方法があるようです。 –