Красноречивая коллекция отношений не возвращается через средство доступа к свойству, но это происходит, если я использую отношение () -> get (); - PullRequest
0 голосов
/ 24 апреля 2019

У меня проблема с eloquent, из-за которой, когда я звоню $unit->assets, я получаю пустую коллекцию. Но если я позвоню $unit->assets()->get() - я получу коллекцию с правильными результатами.

Согласно документации мои отношения определены правильно, что также кажется очевидным, учитывая, что я получаю правильные результаты при вызове get() для объекта отношения.

class Unit extends Model
{
    protected $table = 'organisation_units';

    public function assets()
    {
        return $this->hasMany(MediaElement::class, 'owner_id');
    }
}

class MediaElement extends Model
{
    protected $table = 'template_elements';

    public function owner()
    {
        return $this->belongsTo(Unit::class, 'owner_id');
    }
}

Структура таблицы

organisation_units

id | Имя

template_elements

id | owner_id | имя | Имя файла

1 Ответ

0 голосов
/ 24 апреля 2019

Оказывается, проблема заключалась в том, что я использую «активы» в качестве имени метода отношения. "assets" должны быть зарезервированным или уже использованным ключевым словом в моделях или чем-то еще. Обновлю пост, когда точно выясню почему.

Также имелась та же проблема с именами методов "colors" и "templates".

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

Вызов $model->fresh() перед сохранением в сеансе решил проблему.

Спасибо тем, кто пытался помочь.

...