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

问题描述 投票:1回答:1

我有这个:

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
php laravel eloquent laravel-eloquent
1个回答
3
投票

你创建了从BelongsToUserJobRole关系: https://laravel.com/docs/5.6/eloquent-relationships#one-to-one

在你的User模型中,你可以添加这样的关系:

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

然后改变你的观点:

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

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

User::with('jobRole')->get(...);
© www.soinside.com 2019 - 2024. All rights reserved.