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

How to pass the Auth::user() in the existing query?

我有一个查询,其中 select 是数据库中的一个列值,该值被传递给一个变量,该变量进一步传递给使用 compact 方法的视图。

查询如下:-

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

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

它工作正常。但它只得到 activated_up 字段,所以如果数据库中只有一个用户,它就可以正常工作,但如果有多个用户,我需要考虑 Auth::user() 以区分和 select仅限当前用户,此现有查询不可能。

所以我尝试用 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']);

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

需要进行哪些更改才能获得所需的结果?

你应该这样做:

$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']);