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. Однако его родительский элемент (таблица «Вопросы») не обновляет временную метку в столбце updated_at.

Как решить эту проблему? Спасибо.

+0

Только несколько быстрых проверок: ваша таблица 'answers' имеет поле' question_id' (чтобы проверить правильность установки отношения)? ваша таблица 'answers' имеет поле' question' (чтобы проверить, что имя поля не противоречит атрибуту отношения)? – patricus

+0

В моей таблице ответов есть question_id как внешний ключ и не имеет поля вопросов. –

+0

Имеет ли таблица 'answers' поле' touchhes'? Работает ли это, если вы вручную вызываете '$ answer-> question() -> touch()'? – patricus

ответ

0

Просто пойти с основами сделать что-то вроде следующего:

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

Это обновит timestatmp, что вы хотите сделать.

+0

Этот способ более сложный, если у меня есть много функций, которые требуют обновления или у меня много вложенных отношений. –