Laravel Eloquent查询加入喜欢

时间:2018-03-17 18:09:32

标签: mysql laravel eloquent

我有这个原始查询,但我正在努力将其转换为雄辩。下面是我的原始sql。我不能使用DB:select因为我最后使用了paginate。

select * from orders
join users on orders.user_id = users.id
where orders.id = $search
or orders.reference_no like '%$search%'
or users.name like '%$search%'

public function customer()
{
return $this->belongsTo('App\User', 'user_id', 'id');
}

 $orders = Order::where('reference_no', 'LIKE', "%$search%")
            ->orWhere('reference_no',$search)
            ->orWhere('id',$search)
            ->whereHas('customer', function ($query) use ($search) {
                $query->where('name', 'like', '%$search%');
            })
            ->paginate(10);

3 个答案:

答案 0 :(得分:0)

试试这个

.container {
  height: 100px;
  border: 1px solid black;
  overflow: auto;       /* Try using hidden, scroll, auto or overlay */
}

答案 1 :(得分:0)

试试这个

   $result = Order::select('orders.*')
           ->join('users', 'orders.user_id', '=', 'user.users.id')
           ->where(function($q) use ($search){
                  $q->where('orders.id', $search)
                    ->orWhere('orders.reference_no','like', '%$search%')
                    ->orWhere('users.name','like', '%$search%') ;
                  })
            ->get();

答案 2 :(得分:0)

感谢Pavel和Unai。根据你的答案设法做到这一点。需要做'使用',在te或者我需要将'%'连接到实际的$ search变量。如果我没有concat'。'文字搜索显示在查询

            $orders = Order::select('orders.*')
            ->join('users', 'orders.user_id', '=', 'users.id')
            ->where(function($q) use ($search) {
                $q->where('orders.id', $search)
                    ->orWhere('orders.reference_no', 'like', '%' . $search . '%')
                    ->orWhere('users.name', 'like', '%' . $search .'%') ;
            })
            ->paginate(10);