1 内连接(等值连接)
查询构建器还可以用于编写基本的SQL“内连接”,你可以使用查询构建器实例上的join方法,传递给join方法的第一次参数是你需要连接到的表名,剩余的其它参数则是为连接指定的列约束,www.bojiesz.com 当然,正如你所看到的,你可以在单个查询中连接多张表:
$users = DB::table('users')
->join('contacts', 'users.id', '=', 'contacts.user_id')
->join('orders', 'users.id', '=', 'orders.user_id')
->select('users.*', 'contacts.phone', 'orders.price')
->get();
2, 左连接
如果你是想要执行“左连接”而不是“内连接”,可以使用leftJoin方法。该方法和join方法的使用方法一样:
$users = DB::table('users')
->leftJoin('posts', 'users.id', '=', 'posts.user_id')
->get();
3,高级连接语句
你还可以指定更多的高级连接子句,传递一个闭包到join方法作为该方法的第2个参数,该闭包将会返回允许你指定join子句约束的JoinClause对象
DB::table('users')
->join('contacts', function ($join) {
$join->on('users.id', '=', 'contacts.user_id')->orOn(...);
})
->get();
4,联合(Union)
查询构建器还提供了一条“联合”两个查询的快捷方式,比如,你要创建一个独立的查询,然后使用union方法将其和第二个查询进行联合
$first = DB::table('users')
->whereNull('first_name');
$users = DB::table('users')
->whereNull('last_name')
->union($first)
->get();