php – 使用具有belongsTo关系的accessor mutator

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 使用具有belongsTo关系的accessor mutator脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Laravel 4和我在我的用户模型中设置了一个mutator:

public function getFullnameAttribute($value)
{
    return $this->First_name. ' ' .$this->last_name;
}

但我在我的汽车模型中设置了与该汽车相关联的用户ID的关系:

public function salESManager()
{
    return $this->belongsTo('User','sales_manager')->select('first_name','last_name');
}

我在我的Car table上称这种关系:

$cars = Car::wITh('marqueBasic','modelBasic','salesManager')
    ->get();

现在,我该怎么办呢

$car->salesManager->fullname

目前不起作用,我假设因为它在另一个模型中被称为的那个?

错误是:“试图获取非对象的属性

我在错误的地方叫变异者吗?我已经尝试将它放入关系选择字段,但也搜索了全名和错误的字段名称.

解决方法

可能的原因是您正在定义要为关系提取的字段列表.

为了理解原因,您需要首先了解当您要求它使用SalesManager获取所有汽车时,Eloquent如何急切地加载salesManager关系.在这种情况下,Eloquent会做以下事情:

>加载所有汽车
>获取所有已加载汽车的sales_manager列的值
>从第2点加载id中的所有用户.
>通过匹配获取用户模型的id和汽车的sales_manager列,将加载的用户模型映射到汽车.

如您所见,第4步是不可能的.用户的id字段未列在要为salesManager关系获取的字段列表中,因此当急切地加载salesManager时,Eloquent将无法将获取用户与汽车匹配.您需要将您在salesManager关系中引用的字段添加到列表中:

public function salesManager()
{
    return $this->belongsTo('User','last_name','id');
}

脚本宝典总结

以上是脚本宝典为你收集整理的php – 使用具有belongsTo关系的accessor mutator全部内容,希望文章能够帮你解决php – 使用具有belongsTo关系的accessor mutator所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。