Laravel Eloquent-获取特定行和其他

时间:2019-01-10 10:43:10

标签: laravel laravel-5 eloquent

在我的用户表中,我想获取管理员用户和其他已激活的用户。 实际上,我想要的结果是这两个查询结果的串联:

User::where('user_name','admin')->first();
User::where('is_active',1)->get();

有什么方法可以在一个查询中获得此结果吗?

5 个答案:

答案 0 :(得分:2)

$query = User::where('is_active',1)->where('user_name','admin')->first();

以上查询将仅向您提供一个活动用户,其user_name是admin并且是活动的。

根据我对您的问题的理解,您希望所有处于“活动状态”且user_name为“ admin”的用户,然后在下面的查询中进行尝试。

$query = User::where('is_active',1)->orWhere('user_name','admin')->get();

希望这可以解决您的问题。

答案 1 :(得分:1)

您需要使用并集将两个结果集放在一起。

$first = User::where('user_name','admin')->first();
$users = User::where('is_active',1)->union($first)->get();

那应该使您成为第一个Admin用户和所有活动用户。

实际上,因为它们在同一张表上,所以OR也应如下所示工作:

$users = User::where('is_active',1)
             ->orWhere('user_name', 'admin')
             ->get();

我将保留两个部分,因为它们都可以工作。

答案 2 :(得分:1)

尝试一下

  User::where('is_active',1)
       ->orWhere('user_name', 'admin')
       ->get();

答案 3 :(得分:1)

您应该尝试以下操作:

 $rsltUser = User::where('is_active',1)
       ->orWhere('user_name', 'admin')
       ->get();

答案 4 :(得分:1)

很抱歉收到的回复太晚,每个人都错过了laravel开箱即用的method which accepts array

Eloquent Version
User::where(['user_name' => 'admin','is_active' => '1'])->first();

另一种方法

DB Facade Version

DB::table('users')->where(['user_name' => 'admin','is_active' => '1'])->first();

希望有帮助