将连接查询更改为 laravel

Posted

技术标签:

【中文标题】将连接查询更改为 laravel【英文标题】:Change join query to laravel 【发布时间】:2018-06-20 09:50:18 【问题描述】:

我有一个mysql查询

SELECT a.`head_id` AS "Headid",a.`name` AS "HeadName", b.`id` AS "Emp_ID",b.`name` AS "Emp_name" FROM users a join users b ON a.id=b.head_id where a.`head_id`=63 or b.`id`=63

如何将此查询转换为 laravel?

$users = DB::table('users a')
            ->join('users b', 'a.id', '=', 'b.head_id')

            ->select('a.head_id as Headid','a.name AS HeadName','b.name AS Emp_name','b.name AS Emp_name')
            ->get();

但运气不好,这不起作用。请帮助我。

【问题讨论】:

【参考方案1】:

您的查询构建器看起来不错,只需根据您的普通查询添加 where 过滤器

$users = DB::table('users as a')
            ->join('users as b', 'a.id', '=', 'b.head_id')
            ->select('a.head_id as Headid','a.name AS HeadName','b.name AS Emp_name','b.name AS Emp_name')
            ->where('a.head_id', '=', 63)
            ->orWhere('b.id','=', 63)
            ->get();

【讨论】:

@M khalid junaid 感谢您的回复,但我收到了一个错误,例如 'admin.users a' not exist..query like select a.head_id as Headid, a .name as HeadName, b.name as Emp_name, b.name as Emp_name from users a inner join users b on @98765433@.=@9867654335@ b.head_id 其中a.head_id = 63 或b.id = 63 如果我从users a 中删除单引号,它将起作用 @Ezra 尝试使用关键字users as a

以上是关于将连接查询更改为 laravel的主要内容,如果未能解决你的问题,请参考以下文章

从旧样式更改为新样式与单独的表连接

如何在没有 DB 的情况下将 sql 查询更改为 laravel 模型查询

Laravel:将输入查询的结果更改为友好URL

使用 Laravel 的查询构建器或 Eloquent 将一个表与一个临时表进行内部连接

Laravel 急切加载与显式连接

如何使用 Laravel 的查询构建器执行嵌套连接?