我有一个雄辩的问题,当我打电话给$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 |名称|文件名
答案 0 :(得分:0)
原来的问题是我使用“资产”作为关联方法名称。 “资产”必须是模型之类的保留或已使用的关键字。当我确切知道原因后,将会更新该帖子。
方法名称“ colors”和“ templates”也存在相同的问题。
这里的真正问题是,我将我的组织单位存储在会话中,并且从会话中检索组织单位时,关系已经加载。
在保存到会话之前致电$model->fresh()
解决了该问题。
感谢那些试图提供帮助的人。