Eloquent关系集合不是由属性访问器返回,但如果我使用relation() - > get();

问题描述 投票:0回答:1

我有一个雄辩的问题,当我打电话给$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 |名字|文件名

php laravel eloquent relationship database-normalization
1个回答
0
投票

事实证明,我使用“资产”作为关系方法名称。 “assets”必须是模型或其他内容中保留或已使用的关键字。当我找到确切原因时,会更新帖子。

方法名称“colors”和“templates”也有同样的问题。

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

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

感谢那些试图帮助的人。

© www.soinside.com 2019 - 2024. All rights reserved.