#laravel #eloquent
#laravel #eloquent
Вопрос:
При быстрой загрузке отношения он возвращает пустой массив в качестве результата, но после получения результата отношение работает нормально..
Внутреннее отношение, содержащее функцию $this, не имеет значения атрибута при быстрой загрузке.
Я попытался нетерпеливо загрузить отношения без нетерпеливой загрузки и $this
имеет значение всех атрибутов.
- Контроллер
$temp = StipendCalcVols::with('stipendCalcTypes')->where('vol_id', 110)->first();
- Модель
public function stipendCalcTypes() {
dd($this); // null attributes
return $this->hasMany(StipendCalcTypes::class, 'table_id', 'vol_id')
->where('stipend_calc_id', $this->stipend_calc_id)->where('table_name', 'volunteers');
}
$this
должны иметь значение атрибутов.
Комментарии:
1. Какие значения атрибутов должны
$this
иметь на данный момент, по вашему мнению?2.
$this->stipend_calc_id
или$this->id
ожидание от модели каких-либо атрибутов @Namoshek3. Ну, когда конструктор запросов нетерпеливо загружает связь, ни один из этих атрибутов еще не установлен. Это также потому, что вы хотите загружать одновременно для многих моделей, а не для каждой в отдельности.
4. Laravel не поддерживает составные ключи. Используйте этот пакет: github.com/topclaudy/compoships
Ответ №1:
попробуйте это
$temp = StipendCalcVols::where('vol_id', 110)->first();
$temp = $temp->load('stipendCalcTypes');
Ответ №2:
Попробуйте это:
Вместо:
$this->stipend_calc_id
Используйте это:
$this->attributes['stipend_calc_id']