我尝试在页面上显示所有位置,如:
{{$item->country()->first()->name}}, {{$item->city()->first()->name}}, {{$item->location()->first()->name}}
正如您可以从关系country
,city
,location
中看到这些值。
在这种情况下如何创建访问者?在哪个模型中写入访问器?
我试过了:
public function setTeacherNameAttribute()
{
$this->attributes['teacher_name'] = $this->country->name;
}
答案 0 :(得分:1)
假设您的$ item模型名为 Item ,请执行此操作:
protected $appends = ['address'];
public function getAddressAttribute(){
$address = '';
if (!empty($item->country())) $address .= $item->country()->first()->name;
if (!empty($item->city())) $address .= $item->city()->first()->name;
if (!empty($item->location())) $address .= $item->location()->first()->name;
return $address;
}
然后您可以像$item->address
一样使用它。
注意:如果您已经拥有该名称的列,则将地址更改为其他任何内容。
答案 1 :(得分:0)
无论是使用关系还是仅使用普通模型,都始终通过最终模型访问访问者。在您的情况下,country
,city
和location
模型。
以下方法为name
属性创建一个访问者:
public function getNameAttribute($value) {
// do something with value, or not
return $value;
}