如何在现有查询中传递Auth :: user()?

时间:2018-05-07 06:13:19

标签: laravel laravel-5 eloquent union having

我有一个查询,它从数据库中选择一个列值,并将该值传递给一个变量,该变量将进一步传递给使用compact方法的视图。

查询如下: -

$activated_up = User::where(function($query) {
    $query->where('activated_up', '=', '1')
          ->orWhere('activated_up', '=','0');

    })
    ->get(['activated_up']);

工作正常。但它只获取activated_up字段,所以如果数据库中只有一个用户比它工作正常但是如果有多个用户需要考虑Auth::user()以便区分并仅选择当前用户现有查询无法做到这一点。

所以我尝试使用having方法更新它。

$activated_up = User::where(function($query) {
    $query->having('id_user', Auth::user()->id_user)
          ->where('activated_up', '=', '1')
          ->orWhere('activated_up', '=','0');

    })
    ->get(['activated_up']);

但是不起作用。我也尝试使用下面的union方法: -

$id = User::where('id_user',Auth::user()->id_user)->first();
$activated_up = User::where(function($query) {
    $query->where('activated_up', '=', '1')
          ->orWhere('activated_up', '=','0');
          ->union($id);

    })
    ->get(['activated_up']);

但这也行不通。无论如何,我需要让它工作。

为获得理想的结果需要做出哪些改变?

1 个答案:

答案 0 :(得分:3)

你应该这样做:

$activated_up = User::where('id_user',Auth::user()->id_user)
->where(function($query) {
$query->where('activated_up', '=', '1')
      ->orWhere('activated_up', '=','0');
})
->get(['activated_up']);