内部联接make if条件并获取laravel

时间:2017-12-13 05:28:53

标签: php laravel-5

我尝试匹配两个列,如果它是基于id的匹配,我将为该匹配列分配用户名。但是在加入内部我无法在加入表格时做出条件。

  $list = DB::table('job')
      ->join('users', 'users.id', '=', 'job.created_by')
      ->select('job.*','users.first_name as created_by','users.first_name')
      ->where('job.enterprise_id', $user->id)
      ->get();

在我的json中,我有一个值updated_by,值为1表示我可以匹配id列,如果它匹配,我将显示updated_by = first_name否则updated_by = null。

1 个答案:

答案 0 :(得分:1)

要显示更新作业的用户的名称,您可以使用左连接到用户表。

$list = DB::table('job as j')
        ->join('users as u1', 'u1.id', '=', 'j.created_by')
        ->leftJoin('users as u2', 'j.updated_by' , '=', 'u2.id')
        ->select('j.*','u1.first_name as created_by','u2.first_name as updated_by')
        ->where('j.enterprise_id', $user->id)
        ->get();

如果作业已更新,u2.first_name将返回更新该作业的用户名,如果作业未更新,则对u2.first_name的值为空。此外,我假设您的作业表有一个名为updated_by的列,用于存储此信息。