Intereting Posts
отправить изображение и вернуть его с помощью json? Проблемы с методами для нового API Vimeo массив объединяет три или более массива с php Google App Engine Launcher выдает ошибку ascii-кодека при развертывании файла образа Область действия переменной php PHP GET, если / esle Почему DOM меняет кодировку? Как преобразовать файл .doc в .pdf без отслеживания изменений, используя запись из командной строки? с использованием codeigniter Msgstr "Не получать доступ к суперглобальному массиву $ _SERVER прямо" на Netbeans 7.4 для PHP Предупреждение: mysql_result (): предоставленный аргумент не является допустимым ресурсом результата MySQL в (…) в строке 4 Как сделать динамический адрес действия формы в codeigniter? Laravel, неспособный copyDirectory или moveDirectory Как я могу установить видеочат на своем сайте, например Gmail? Доступ к переменной из области действия другой функции? Отправка формы запроса POST на PHP

Использование withTrashed с отношениями в Eloquent

Есть ли способ использовать withTrashed с отношениями в Eloquent.

Мне нужно это. У меня есть таблица и модель Mark и другая таблица User . User много Mark и Mark принадлежит User . Поэтому я определил это в моделях «Красноречивый».

Теперь мне нужно получить экземпляр Mark который мягко удален. Это не проблема, если User не является мягким удалением, но если оба и Mark и User мягко удалены, я получаю сообщение об ошибке Trying to get property of non-object , потому что

 $mark->user 

не вернет фактического пользователя, потому что он будет удален.

Есть ли способ, которым я могу сделать что-то вроде

 $mark->withTrashed()->user 

получить этого связанного пользователя, даже если он удален?

В зависимости от ваших потребностей вы можете определить взаимосвязь:

 public function marks() { return $this->hasMany('Mark')->withTrashed(); } // then just $user->marks; 

или использовать его на лету:

 $user->marks()->withTrashed()->get(); // or when lazy/eager loading $user = User::with(['marks' => function ($q) { $q->withTrashed(); }])->find($userId); 

И в вашем скринированном примере это будет:

 $mark->user() // get relation object first ->withTrashed() // apply withTrashed on the relation query ->first(); // fetch the user // alternatively you use getResults relation method $mark->user() ->withTrashed() ->getResults(); // returns single model for belongsTo $user->marks()->withTrashed() ->getResults(); // returns collection for hasMany 

Вы можете сделать это следующим образом:

 $mark->withTrashed()->first()->user->withTrashed()->first()