Как вы получаете изменения в модели Laravel в отношениях hasMany? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть модель «Контакт», у которой есть «Адрес».При сохранении контакта с новым адресом

...
//$contact = some instance of Contact
$contact->addresses()->save(new Address(['street' => '4811 Example Dr.']));

dd($contact->getChanges()); // returns null
// dd($contact->addresses()->getChanges()); // method not available   
// dd($contact->addresses->getChanges()); // method not available

Как я могу проверить, какие изменения действительно были сделаны после вызова сохранения?

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

Следующая строка возвращает логическое значение.Вы можете проверить его возвращаемое значение.

$value = $contact->addresses()->save(new Address(['street' => '4811 Example Dr.']));


if($value){
   //it is saved
}else{
  //it is not saved    
}
0 голосов
/ 22 февраля 2019

* отредактировано попробуйте это

if (!$contact) {
   $changes = $contact->getChanges();
}
0 голосов
/ 22 февраля 2019

$contact->getChanges() возвращает ноль, потому что getChanges() пытается определить, не было ли каких-либо изменений в таблице контактов, которых не было, следовательно, ноль.

$contact->addresses()->getChanges() также не будет работать, потому что $contact->addresses() не работаетвернуть экземпляр модального адреса.

Вы можете использовать простой ответ save для проверки, так как он возвращает логическое значение.

$addressSavedSucccessfully = $contact->addresses()->save(new Address(['street' => '4811 Example Dr.']));

if ($addressSavedSucccessfully) {
    dd('address was saved correctly');
} else {
    dd('something went wrong');
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...