【问题标题】:Join tables in Laravel Eloquent在 Laravel Eloquent 中连接表
【发布时间】:2019-12-06 11:03:07
【问题描述】:

我有三个这样的表:

user

id | name | department_id

user_verify

id | code | user_id | department_id

department

id | name

我想查询表 user_verify 并加入其他表以获取用户名和部门名称。

我在我的模型中试过这个:

class ListUserVerify extends Model
{
    protected $table = 'user_verify';


    public function getUserVerify()
    {
        return $this->select("{$this->table}.code",'user.fullname','department.name')
                    ->join('user', 'user.id', '=', "{$this->table}.user_id")
                    ->join('department', 'department.id', '=', "{$this->table}.department_id")
                    ->get();
    }
}

但是这个函数返回null,我不知道我的查询出了什么问题。

你能告诉我我做错了什么吗?

非常感谢!

【问题讨论】:

  • 为什么 user 和 user_verify 都有 department_id ?
  • 您不应该在模型中创建查询。改用服务。

标签: mysql laravel eloquent


【解决方案1】:

试试看。

return \DB::table("{$this->table}")->select("{$this->table}.code",'user.fullname','department.name')
                ->join('user', 'user.id', '=', "{$this->table}.user_id")
                ->join('department', 'department.id', '=', "{$this->table}.department_id")
                ->get();

【讨论】:

    【解决方案2】:

    试试这个

    return DB::table('user_verify')->leftjoin('user','user.id','=','user_verify.user_id')
               ->leftjoin('department','department.id','=','user_verify.department_id')
               ->select('user.name as username','department.name as departmentname')
               ->get();
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2023-04-03
      • 1970-01-01
      • 2019-09-06
      • 2018-08-07
      • 2021-01-05
      • 2016-07-22
      • 2018-11-06
      • 1970-01-01
      相关资源
      最近更新 更多