Laravel relationship $это возвращает значение null при обращении с помощью функции ‘with’

#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 ожидание от модели каких-либо атрибутов @Namoshek

3. Ну, когда конструктор запросов нетерпеливо загружает связь, ни один из этих атрибутов еще не установлен. Это также потому, что вы хотите загружать одновременно для многих моделей, а не для каждой в отдельности.

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']