2017-12-02 3 views
2

私はを使用しています。 私のデータベースにユーザーとタスクがあります。私のタスクは、次のスキーマを持っている:MassAssignmentException _token - ユーザーとタスクを保存します。

Schema::create('tasks', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name'); 
     $table->integer('user_id')->unsigned(); 
     $table->timestamps(); 
    }); 

マイユーザーモデルは、私は、データベース内のユーザーからタスクを保存したいと思い、次の

class User extends Authenticatable 
{ 
    use Notifiable; 

    protected $fillable = [ 
     'name', 'email', 'password', 
    ]; 

    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 

    public function task() 
    { 
     return $this->hasMany('App\Task'); 
    } 
} 

のように見えます。私が試してみました店舗方法は以下を参照してください。

public function store(Request $request) 
{ 

    $this->validate($request, [ 
     'newTaskName' => 'required|min:3|max:190', 
    ]); 

    Auth::user()->task()->Create($request->all()); //here I get the error 
    Session::flash('success', 'New task has been successfully added.'); 

    return redirect()->route('tasks.index'); 
} 

をしかし、私はこの行Auth::user()->task()->Create($request->all());で次のエラーを取得:

Illuminate\Database\Eloquent\MassAssignmentException _token 

要求が正しくリコールセーフされていない理由を任意の提案を?

+0

以下のように:prop '_token'のタスクモデルに質量割り当てが設定されていません。 https://laravel.com/docs/5.5/eloquent#mass-assignmentこれは、$ request-> all()にcsrf_token sendリクエストが含まれているためではありません。その行を$ request-> only(['prop1'、 'prop2])に変更してください。 – macghriogair

+0

は 'Task'モデルも共有しますか?特に '$ fillable'値ですか? – C2486

+0

$ request-> all()はどのような方法でも動作します。create()はfillableのフィールドのみを反映します..もしそうでなければ無視します..あなたのタスクモデルを表示します – ZeroOne

答えて

1

DB

$insertData = [ 
    "name" => $request->name, 
    "user_id" => \Auth::id() 
]; 

DB::table('tasks')->insert($insertData); 

か、モデルがタスクモデルでTask

$task = new Task($insertData); 
$task->save(); 
1

代わりall()->except()メソッドを使用します。

Auth::user()->task()->create($request->except('_token')); 
+0

@ user2486 OPは 'Task'モデルを投稿していないので、私は彼が' fillable'を持っていると仮定しました。そして、 'create()'を動作させるためには、モデルに 'fillable'を持たせる必要があります。 –

0

として作成した場合は、この行を追加して試してみてください:

protected $guarded = ['_token']; 
関連する問題