2016-07-16 88 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列。但是,它的父級(問題表)不會更新updated_at列中的時間戳。

如何解決這個問題?謝謝。

+0

只需進行一些快速的完整性檢查:您的「答案」表中是否有「question_id」字段(以驗證關係是否正確設置)?你的「答案」表有一個「問題」字段(以驗證字段名稱是否與關係屬性不衝突)? – patricus

+0

我的答案表有question_id作爲外鍵並且沒有問題字段。 –

+0

'答案'表是否有'touches'字段?如果你手動調用'$ answer-> question() - > touch()',它會起作用嗎? – patricus

回答

0

只是基礎知識去這樣做以下:

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

這將更新你想要做timestatmp。

+0

如果我有許多需要更新的函數或者我有很多嵌套關係,這種方法會更復雜。 –