“Laravel查询”构建器如何检查项目是否出现两次

时间:2017-09-01 04:09:20

标签: php sql laravel laravel-5.4

好的,我想使用“Laravel查询”构建器来检查特定用户的名称是否在列中出现两次。例如,在我的程序中,当新用户注册时,他被随机地分配给用户作为该用户的孩子。所以新用户将有一个像parent_id这样的字段。一个用户不能有两个以上的孩子,所以我想使用查询构建器查询我的数据库,以获得任何在parent_id列中没有出现两次ID的随机用户

3 个答案:

答案 0 :(得分:2)

试试这些

User::select('id', DB::raw('COUNT(*) as count'))
    ->groupBy('parent_id')
    ->having('count', '<' , 2)
    ->inRandomOrder()->first();

或更短的方式

User::select('id')->groupBy('parent_id')->havingRaw('COUNT(*) < 2')->inRandomOrder()->first();

在这里,您将以随机方式获取parent_id,其DBparent_id的外观小于2次

希望这会对你有所帮助。

答案 1 :(得分:1)

<script src="//d3js.org/d3.v3.min.js"></script>
<svg width="500" height="100"></svg>

我认为这是您正在寻找的查询。它返回User::where('parent_id', $someId)->count(); 用作id的次数。然后,您可以使用parent_id语句检查它是否少于两个。

您可以使用循环和随机数生成器来获取随机if

答案 2 :(得分:0)

这是我的建议,而不是通过查询构建器找到它更好地使'parent_id'列成为唯一的,并且您可以在函数中进行验证 -

'parent_id' => 'required|unique:users'

希望这会对你有所帮助。