Eloquent 关系集合未通过 属性 访问器返回,但如果我使用 relation()->get();
Eloquent relation collection not returning by property accessor but does if I use relation()->get();
我遇到了 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');
}
}
Table 结构是
organisation_units
编号 |姓名
template_elements
编号 | owner_id |姓名 |文件名
原来问题是我使用 "assets" 作为关系方法名称。 "assets" 必须是保留关键字或已在模型或其他内容中使用的关键字。当我找到确切原因时,将更新 post。
方法名称 "colors" 和 "templates" 也有同样的问题。
这里真正的问题是,我在会话中存储我的组织单元,当从会话中检索时,关系已经加载。
在保存到会话之前调用 $model->fresh()
解决了问题。
感谢那些试图提供帮助的人。
我遇到了 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');
}
}
Table 结构是
organisation_units
编号 |姓名
template_elements
编号 | owner_id |姓名 |文件名
原来问题是我使用 "assets" 作为关系方法名称。 "assets" 必须是保留关键字或已在模型或其他内容中使用的关键字。当我找到确切原因时,将更新 post。
方法名称 "colors" 和 "templates" 也有同样的问题。
这里真正的问题是,我在会话中存储我的组织单元,当从会话中检索时,关系已经加载。
在保存到会话之前调用 $model->fresh()
解决了问题。
感谢那些试图提供帮助的人。