2017-04-18 22 views
0

私はこのルートを持っています: Route :: resource( 'my-account'、 'ProfileController');Laravel 5.4更新メソッドは更新されません

私は私のコントローラでこのメソッドを持っている:私は、最初の名前がテーブルに更新されていないフォームを送信すると

<form class="form" role="form" method="POST" action="{{ url('/my-account/'. $user->id) }}"> 

    {{ method_field('PATCH') }} 

    {{ csrf_field() }} 

    <div class="form-group" id="firstNameDiv"> 

     <label class="control-label">First Name</label> 

     <input type="text" class="form-control" name="first_name" value="{{ $user->first_name }}"> 

     <span class="help-block" id="firstNameError"></span> 

    </div> 

public function update(Request $request, User $user) 
{ 
     DB::enableQuerylog(); 

     $user->update([ 
      'first_name' => $request->first_name, 
      'last_name' => $request->last_name, 
      'phone' => $request->phone 
     ]); 

     dd(\DB::getQuerylog()); 
} 

私はこのフォームを持っています。

私がdd($ request-> first_name)を試してみたら、私が入力した名前が表示されます。

DBログは次のような空の配列を返します。[]、なぜ更新されませんか?

+0

に$の充填可能なを持っていることを確認してください?多分 '$ user'インスタンスはあなたの考えではないでしょうか? – ariestikto

答えて

-1

ddをメソッドで実行する最初のものとして入れて、起動するようにしてください。少なくとも何かをしていないように見えるたびに私はそれをやります。

は、whereなしの理由は次のとおりですか?すべてのレコードを更新しない限り、クエリにはwhere()が必要です。

また、これについてはわかりません...モデルをコンストラクタに注入するべきではないですか?

いずれかのような何かをしようと、この

$user = User::find($id) // or in your case $user->find($id); 
$user->firstname = $request->input('firstname'); 
$user->save(); 

それとも

$user->where('id', $id)->update(['firstname' => $request->input('firstname')]); 
+0

ありがとうございますが、私はそれを別のモデル/コントローラーで全く同じにして、すべてがうまく動作します。ユーザーは私がどこで行う必要のない方法に送られています。メソッドに最初にdd($ request)を置くと、すべてのフィールドと正しい値でリクエストが表示されます。 –

+0

DB :: table( 'users') 'を試しましたか?それがうまくいくなら、雄弁なコードか雄弁なコアコードに何か間違っているはずです。チェックのためにQuery Builderを使用してみてください。 – jen

+0

申し訳ありませんが、どこでDB :: table( 'users')を使用する必要がありますか、なぜですか?ことは、これは私が持っている他のコントローラとうまく動作しているということです。 $ userの代わりに$ idを送信してfindOrFailなどを実行するように変更しました。他の場所で動作するときにこのコードが機能しない理由を理解する必要があります –

-1

uは、テーブルにcreated_atととupdated_atのを使用しない場合は、使用してそれらを無効にする必要があります 公共$タイムスタンプを=偽;

関連する問題