delphinpro
@delphinpro
frontend developer

Как загрузить отношения вместе с удалёнными записями?

Есть две модели с отношением one-to-many

class Bonus {
  function reward(): BelongsTo {
    return $this->belongsTo(Reward::class);
  }
  function user(): BelongsTo {
   return $this->belongsTo(User::class);
  }
}

class Reward {
  function bonuses(): HasMany {
    return $this->hasMany(Bonus::class);
  }
}


И сама модель Bonus привязана к юзеру тем-же отношением.

class User {
  function bonuses(): HasMany {
    return $this->hasMany(Bonus::class);
  }
}


В Reward используется "мягкое" удаление (SoftDeletes).

Я получаю список бонусов вместе с их типами для отображения в админ интерфейсе.

$entries = $user->bonuses()->orderBy(...)
  ->with('reward')
  ->paginate();


Модель Bonus использует внутри себя обращение к Reward. Например, так:

public function getNameAttribute(): string {
  return $this->reward->localizedAttribute('name');
}


Теперь, если я удаляю какой-то reward, то у меня получается ошибка

Call to a member function localizedAttribute() on null


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

Вот мне нужно, что бы здесь удалённые модели тоже подтягивались и отображались.

Документацию посмотрел, там весьма скудное информация по мягкому удалению.
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
@inFureal
public function roles() {
    return $this->hasMany(Role::class)->withTrashed();
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы