2016-07-16 4 views
-1

Laravelフレームワークでは、2つのモデルがあります。最初の質問のモデルである:Laravel 5.2は子を更新した後に親のタイムスタンプを更新しません。

class Question extends Model 
{ 
    protected $table = 'questions'; 
    protected $fillable = [...]; 
    public function answers() 
    { 
     return $this->hasMany('App\Models\Answer'); 
    } 
    ... 
} 

、答えモデル:

class Answer extends Model 
{ 
    protected $table = 'answers'; 
    protected $fillable = [...]; 
    protected $touches = ['question']; 
    public function question() 
    { 
     return $this->belongsTo('App\Models\Question'); 
    } 
    ... 
} 

私はコードで答えモデルのいくつかの属性を更新:私は、データベースをチェックすると

$answer = $answer->select('id') 
      ->where('id', $id) 
      ->firstOrFail(); 
$answer->update($data); 

を、回答テーブル内のデータがされますupdated_at列を含めて更新されました。ただし、その親(Questionsテーブル)はupdated_at列のタイムスタンプを更新しません。

この問題を解決するにはどうすればよいですか?ありがとうございました。

Question::find($questionId)->touch(); 

これは、あなたがしたいtimestatmpを更新します:ちょうど基本と行く

+0

いくつかのクイックサニティチェック:あなたの 'answers'テーブルに' question_id'フィールドがありますか?あなたの 'answers'テーブルは' question'フィールドを持っていますか(フィールド名が関係属性と競合していないことを確認するため) – patricus

+0

私の応答テーブルは、外部キーとしてquestion_idを持ち、質問フィールドはありません。 –

+0

'answers'テーブルに' touches'フィールドがありますか?手動で '$ answer-> question() - > touch()'を呼び出すと動作しますか? – patricus

答えて

0

は、次のような何かを行います。

+0

この方法は、更新が必要な多くの機能がある場合や、多数のネストされた関係がある場合は、より複雑です。 –

関連する問題