Laravel - не удается получить модель после удаления связанных записей модели - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть функция postShippingmethods, в которой я удаляю, обновляю или создаю новые способы доставки в зависимости от того, что пользователь указал в форме. Он работает так, как должен, за исключением того, что если какие-либо методы удалены, я получаю пустой результат при попытке получить пользовательскую модель с обновленными методами.

Чтобы удалить методы, я сначала получаю пользователя:

$user = \App\User::where('id',$id)->with(['shipping_profiles' => function($query) {
                    $query->where('default', 1);
                }, 'shipping_profiles.methods' ])->first();

Я сравниваю хранимые методы с методами в запросе; если они отсутствуют, их следует удалить.

Этот код делает удаление:

 foreach($non_included_ids as $id){
                    $method = \App\ShippingMethod::find($id);
                    $method->suppliers()->detach();
                    $method->delete();
                } 

Затем я получаю пользователя еще раз, чтобы получить обновленные данные:

$user = \App\User::where('id',$id)->with(['shipping_profiles' => function($query) {
                    $query->where('default', 1);
                }, 'shipping_profiles.methods' ])->first();

^^ это работает хорошо, если ничего не было удалено, но по какой-то причине , если что-то было удалено , приведенный выше код ничего не вернет. И когда я пытаюсь использовать $user для извлечения данных, я, конечно, получаю "Trying to get property of non object".

Так может ли кто-нибудь объяснить, почему это происходит и что я должен сделать, чтобы пользователь получил обновленные данные?

1 Ответ

0 голосов
/ 03 сентября 2018

Используйте другое имя переменной в цикле:

foreach($non_included_ids as $non_included_id){

В противном случае цикл изменяет значение $id, а \App\User::where('id',$id) выбирает неправильного пользователя.

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