关于laravel中join的一些联想

总结一下 复杂查询的方法:

普通的join查询 
DB::table('users')
    ->join('contacts', 'users.id', '=', 'contacts.user_id')
    ->join('orders', 'users.id', '=', 'orders.user_id')
    ->select('users.id', 'contacts.phone', 'orders.price')
    ->get();
Left Join 声明语句 
DB::table('users')
->leftJoin('posts', 'users.id', '=', 'posts.user_id')
->get();
//select * from users where name = 'John' or (votes > 100 and title <> 'Admin') 

//这里注意一下  想要对where条件里面的东西继续划分,可以利用$query 执行查询器
DB::table('users')
    ->where('name', '=', 'John')
    ->orWhere(function($query)
    {
        $query->where('votes', '>', 100)
              ->where('title', '<>', 'Admin');
    })
    ->get();

问题一,如果想要对join里查出的东西 再进行条件划分,怎么做呢。看个例子
主要是 $join->on('这里放置联合查询条件')->where(操作的条件)

DB::table('goods')
            ->select('goods.*')
            ->distinct('goods.id')
            ->join('goods_auction',function ($join) use (&$user){
                $join->on('goods.id','=','goods_auction.goods_id')
                    ->where('goods_auction.buyer_id','=',$user['id']);
            });

这里&$user 是上文传过来的数据,可以进行操作

你可能感兴趣的:(关于laravel中join的一些联想)