如何在加载的控制器中向模型添加自定义属性?

时间:2018-03-01 00:35:06

标签: php laravel eloquent laravel-eloquent

我有这个:

public function index()
{

    $allusers = User::get(['id', 'first_name', 'last_name', 'postcode', 'preferred_role_id', 'email']);

    return view('users.index', ['allusers' => $allusers]);

}

现在,preferred_role_id是一个整数,它指向JobRoles模型(job_roles)表中的id,其中有一个名称为job角色的字段。如何将该名称传递给$allusers中的每个用户?我想在这样的视图中访问它:

@foreach ($allusers as $user)
    <tr>
        <td>
            {{$user->first_name}}
        </td>
        <td>
            {{$user->job_role}}
        </td>
    </tr>
@endforeach

1 个答案:

答案 0 :(得分:3)

您创建了从BelongsToUser的{​​{1}}关系:
https://laravel.com/docs/5.6/eloquent-relationships#one-to-one

JobRole模型中,您可以添加如下关系:

User

然后改变你的观点:

public function jobRole() {
    return $this->belongsTo(App\JobRole::class, 'preferred_role_id');
}

要提高性能,您应该使用预先加载:

{{ $user->jobRole->name }}