Laravel 5根据ID获取名称

时间:2015-08-24 10:44:22

标签: laravel laravel-5

我有一个用户和部门表。所以我的部门表可能有这样一行

 id | departmentName         
----------------------
 2  | Marketing       
----------------------

用户表可能有类似

的内容
 id | name       | email                | departmentId           
-------------------------------------------------------
 18 | Nick       | nick@email.com       | 2   
-------------------------------------------------------

因此,users表通过id链接到departments表。

所以现在进入我的UserController,在index函数中,我做

public function index()
{
    $users = User::all();
    return view('users.index', compact('users'));
}

现在,它将显示我的用户表中的所有内容。

我的问题是,我不想显示departmentId。我想显示链接到该departmentID的departmentName。因此,在上面的示例中,我的用户索引页面应该显示Marketing,而不是2。

我将如何做到这一点?

由于

1 个答案:

答案 0 :(得分:3)

您可以使用Eloquent Relationships。您在问题中描述的内容是One-to-Many Relation,这意味着某个部门可以拥有多个用户,并且每个用户都属于某个部门。因此,您需要为departments表设置一个模型(如果您还没有这样做),然后在User模型中定义关系,如下所示:

class User extends Model
{
    public function department()
    {
        return $this->belongsTo('App\Department', 'departmentId');
    }
}

然后,您可以通过该关系访问视图中的部门详细信息:

@foreach ($users as $user)
    {{ $user->department->departmentName }}
@endforeach