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を更新します:ちょうど基本と行く
いくつかのクイックサニティチェック:あなたの 'answers'テーブルに' question_id'フィールドがありますか?あなたの 'answers'テーブルは' question'フィールドを持っていますか(フィールド名が関係属性と競合していないことを確認するため) – patricus
私の応答テーブルは、外部キーとしてquestion_idを持ち、質問フィールドはありません。 –
'answers'テーブルに' touches'フィールドがありますか?手動で '$ answer-> question() - > touch()'を呼び出すと動作しますか? – patricus