Мне нужно получить отношение моделей, включая его мягко удаленные элементы, но только для этого 1 экземпляра. Я не хочу изменять модель, чтобы каждый раз, когда я использую связь, она возвращала также все мягко удаленные записи.
Как я могу этого добиться?
Модель пользователя
class User extends Authenticatable
{
public function contacts(){
return $this->hasMany('App\Contacts','user_id','id');
}
}
Контроллер
$user = User::findOrFail($id);
//Need to be able to get the trashed contacts too, but only for this instance and in this function
$user->contacts->withTrashed(); //Something like this
return $user;
Как я могу получить удаленные строки только один раз в моем контроллере?
Спасибо






Вы можете использовать метод withTrashed по-разному.
Чтобы связать звонок с вашими отношениями, вы можете сделать следующее:
public function roles() {
return $this->hasMany(Role::class)->withTrashed();
}
Чтобы использовать то же самое на лету:
$user->roles()->withTrashed()->get();
Для вашего особого сценария:
$user->contacts()->withTrashed()->get();
Мне было совершенно непросто просто запустить метод withTrashed() в самом представлении, где я зацикливаюсь на нем. Наверное, самый чистый способ добиться этого, спасибо!
Как я могу фильтровать записи при извлечении записей с помощью withTrashed ()? laracasts.com/discuss/channels/laravel/…
Вы можете сделать это с помощью:
$user = User::findOrFail($id);
$user->contacts()->withTrashed()->get(); //get all results
return $user;
Когда вы вызываете связь с (), вы можете добавить метод withTrashed(). После этого вам нужно get() результатов.
Глядя на документацию Laravel на Запрос моделей с обратимым удалением:
//The withTrashed method may also be used on a relationship query:
$flight->history()->withTrashed()->get();
Проблема заключается в том, что использование $user->contacts возвращает пользователю коллекцию связанных записей контактов, в то время как $user->contacts() выполняет новый запрос.
Как бы вы подошли к вложенным отношениям? A принадлежит многим B и B имеет много C? Мне нужен способ сказать: «Дайте мне ВСЕ результаты для A (включая удаленные), где ВСЕ отношения (B и B-> C) показывают удаленные элементы». Это возможно?
Проблема заключается в том, что использование
$user->contactsвозвращает пользователю коллекцию связанных записей контактов, в то время как$user->contacts()выполняет новый запрос.