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会做以下事情: >加载所有汽车 如您所见,第4步是不可能的.用户的id字段未列在要为salesManager关系获取的字段列表中,因此当急切地加载salesManager时,Eloquent将无法将获取的用户与汽车匹配.您需要将您在salesManager关系中引用的字段添加到列表中: public function salesManager() { return $this->belongsTo('User','last_name','id'); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |