Laravel 5 - 如何在同一个表上执行左连接

时间:2016-09-06 11:07:33

标签: php mysql laravel

在我的申请表中,目前有两张表:usersemployees。后者只是Laravel附带的样板users表的配置文件表。

我在employees内有两个外键,一个user_id指向id表上的users。基本上,注册用户的个人资料数据。 employees中的第二个外键是manager_id。这是作为员工经理的人的身份。有些用户是管理员,并且有一个空白的manager_id字段。

我想从我的Employee模型中检索user_idmanager_id匹配的行,然后将它们全部发送到我的视图,在那里他们会看到first_name和经理的last_name。目前我看到经理ID而不是他们的名字。

3 个答案:

答案 0 :(得分:1)

尝试这样的事情:

$users = DB::table('users t1')
->join('users t2', 't1.id', '=', 't2.user_id')
->select('your column list')
->get();

//这里我们为users表创建2个别名,使其自行加入

答案 1 :(得分:1)

示例LeftJoin =>

DB::connection('testing')->table('table1 as t1') ->select('t1.column, t2.column') ->leftJoin('table2 as t2','t2.client_id','=','t1.id') ->get();

答案 2 :(得分:0)

在您的Employees模型中添加以下方法:

public function manager()
{
    return $this->hasOne('App\User', 'id', 'manager_id');
}

然后您可以像这样获取经理的名称:

$employee = \App\Employee::find(1);
$manager = $employee->manager()->first();
$manager_name = $manager->name;
相关问题