laravel中Join语法以及利用Join多个条件

laravel中我们经常会利用join,leftjion和rightjoin举办连表查询,很是的利便,可是我本日碰着一个问题,就是链表查询需要on多个条件,即我要订单的id和发货人都一样,默认的join只支持单个查询,所以我下面总结两种要领:

一、利用原是表达式(不推荐)

原生SQL中我们可以通过如下要领举办

select * from `orders` left join `users` on `orders`.`usename`=`users`.`usename` and `orders`.`platform`=`users`.`platform` where `orders`.`order_status` = 2

那么团结laravel,我们可以所以

DB::select('select * from `orders` left join `users` on `orders`.`usename`=`users`.`usename` and `orders`.`platform`=`users`.`platform` where `orders`.`order_status` = :id', ['id' => 1]);

二、利用高级的Join语法(推荐利用)

我们只需要所以如下代码即可完成我们的Join多个条件

DB::table('users') ->join('contacts', function ($join) { $join->on('users.id', '=','contacts.user_id')->on('users.usename', '=','contacts.usename'); }) ->get();

假如你想要相识更多,我们可以看一下文档中的描写:

让我们以传入一个闭包看成 join 要领的第二参数来作为开始。此闭包会吸收 JoinClause 工具,让你可以在 join 子句上指定约束:

DB::table('users') ->join('contacts', function ($join) { $join->on('users.id', '=','contacts.user_id')->orOn(...); }) ->get();

若你想要在毗连中利用「where」气势气魄的子句,则可以在毗连中利用 where 和 orWhere 要领。这些要了解较量字段和一个值,来取代两个字段的较量:

DB::table('users') ->join('contacts', function ($join) { $join->on('users.id', '=', 'contacts.user_id') ->where('contacts.user_id', '>', 5); }) ->get();

到此这篇关于laravel中Join语法以及利用Join多个条件的文章就先容到这了,更多相关laravel中Join语法内容请搜索剧本之家以前的文章或继承欣赏下面的相关文章但愿各人今后多多支持剧本之家!

您大概感乐趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsjxzf.html