(Laravel)仅检索具有关系的用户

时间:2016-12-22 01:03:14

标签: php laravel laravel-5 eloquent laravel-5.3

在我的网站中,我有用户和项目。用户可以创建项目。我希望得到一个包含所有用户的数组,其中有一个项目的用户首先出现,而没有项目的用户则去了。

到目前为止,我已经这样做了:

$users = User::all();
foreach($users as $user) {
    if ($user->item) {
        $sortedUsers + $user;
    }
// now loop again and add users without relationship

效率非常低,我确信有更好的方法。

4 个答案:

答案 0 :(得分:2)

您可以查询是否存在关系

$users = User::has('items')->with('items')->get();

使用该语法,您将告诉laravel获取具有项目并急切加载项目的所有用户;

编辑: 阅读之后看起来并不像你真正想要的项目只是拥有项目的用户所需要的只是

$users = User::has('items')->get();

答案 1 :(得分:0)

如果没有看到ip = '192.168.0.' count = 0 while count <= 255: print(count) count += 1 for i in range(10): ipg=ip+str(count) t = Thread(target=conn, args=(ipg,80)) t.start() Items的关系,我不确定这是否会奏效,但您可以尝试以下方法:

Users

或者它可能仅适用于:

$users = Users::select('users.*')->orderBy('items.id')->with('items')->get();

<强>更新

$users = Users::orderBy('items.id')->with('items')->get();

答案 2 :(得分:0)

你可以尝试

  

$ users = User :: with(&#39; item&#39;) - &gt; get();

     

foreach($ users as $ user){

echo $User->item->name; 
     

}

答案 3 :(得分:0)

您可以使用has()向用户提供商品,doesntHave()可以使用户无需商品:

$withItems = User::has('items')->get();

$withoutItems = User::doesntHave('items')->get();

然后merge()两个集合:

$users = $withItems->merge($withoutItems);

你说你想要一个数组,所以你可以将结果转换成一个toArray()

的数组
$array = $users->toArray();