如何在Laravel中建立关系?

时间:2017-05-13 19:31:44

标签: laravel laravel-5 laravel-5.4

我尝试在页面上显示所有位置,如:

{{$item->country()->first()->name}}, {{$item->city()->first()->name}}, {{$item->location()->first()->name}}

正如您可以从关系countrycitylocation中看到这些值。

在这种情况下如何创建访问者?在哪个模型中写入访问器?

我试过了:

public function setTeacherNameAttribute()
    {

        $this->attributes['teacher_name'] = $this->country->name;


    }

2 个答案:

答案 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)

无论是使用关系还是仅使用普通模型,都始终通过最终模型访问访问者。在您的情况下,countrycitylocation模型。

以下方法为name属性创建一个访问者:

public function getNameAttribute($value) {
  // do something with value, or not
  return $value;
}