【问题标题】:Laravel 5 get name based on IDLaravel 5 根据 ID 获取名称
【发布时间】:2015-08-24 10:44:22
【问题描述】:

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

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

用户表可能有类似的东西

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

所以 users 表通过 id 链接到部门表。

现在到我的 UserController 上,在 index 函数中,我这样做了

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

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

我的问题是,我不想显示部门 ID。我想显示链接到该部门 ID 的部门名称。因此,在上面的示例中,我的用户索引页中的那一行应该显示 Marketing,而不是 2。

我该怎么做呢?

谢谢

【问题讨论】:

标签: laravel laravel-5


【解决方案1】:

您可以使用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

【讨论】:

  • 谢谢。我确实设置了模型和关系。您在哪里获得部门名称,这会在控制器中与我执行 User:all() 的位置一起完成吗?然后我将它传递给视图?或者我可以直接在视图中进行吗?谢谢
  • 您可以直接在视图中执行此操作。
  • 我已经用更相关的用法示例更新了我的答案。
  • 当我尝试直接在视图中执行此操作时,我收到错误 Trying to get property of non-object
  • 不用担心,随着您的更新,它可以完美运行。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
相关资源
最近更新 更多