雄辩的关系集合不会由属性访问器返回,但是如果我使用Relation()-> get();会返回

时间:2019-04-24 15:58:26

标签: php laravel eloquent relationship database-normalization

我有一个雄辩的问题,当我打电话给$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 :(得分:0)

原来的问题是我使用“资产”作为关联方法名称。 “资产”必须是模型之类的保留或已使用的关键字。当我确切知道原因后,将会更新该帖子。

方法名称“ colors”和“ templates”也存在相同的问题。

这里的真正问题是,我将我的组织单位存储在会话中,并且从会话中检索组织单位时,关系已经加载。

在保存到会话之前致电$model->fresh()解决了该问题。

感谢那些试图提供帮助的人。