Laravel 查询生成器如何检查一个项目是否出现两次
Laravel Query builder how to check if an item appears twice
好的,我想使用 Laravel 查询构建器来检查特定用户名是否在列中出现两次。例如在我的程序中,当一个新用户注册时,他被随机分配给一个用户作为该用户的 child。所以新用户将有一个像 parent_id 这样的字段。一个用户不能有超过两个 children,所以我想使用查询生成器查询我的数据库,以获取 ID 未在 parent_id 列
中出现两次的任何随机用户
这是我的建议,而不是通过查询构建器找出更好的方法,使 'parent_id' 列尽可能唯一,并且您可以在函数中进行验证 -
'parent_id' => 'required|unique:users'
希望对您有所帮助。
User::where('parent_id', $someId)->count();
我认为这就是您要查找的查询。它 returns id
被用作 parent_id
的次数。然后你可以使用 if
语句来检查它是否小于两个。
您可以使用循环和随机数生成器来获得随机数 $someId
。
试试这些
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
,它在DB
中出现的次数少于parent_id
的2次
希望对您有所帮助。
好的,我想使用 Laravel 查询构建器来检查特定用户名是否在列中出现两次。例如在我的程序中,当一个新用户注册时,他被随机分配给一个用户作为该用户的 child。所以新用户将有一个像 parent_id 这样的字段。一个用户不能有超过两个 children,所以我想使用查询生成器查询我的数据库,以获取 ID 未在 parent_id 列
中出现两次的任何随机用户这是我的建议,而不是通过查询构建器找出更好的方法,使 'parent_id' 列尽可能唯一,并且您可以在函数中进行验证 -
'parent_id' => 'required|unique:users'
希望对您有所帮助。
User::where('parent_id', $someId)->count();
我认为这就是您要查找的查询。它 returns id
被用作 parent_id
的次数。然后你可以使用 if
语句来检查它是否小于两个。
您可以使用循环和随机数生成器来获得随机数 $someId
。
试试这些
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
,它在DB
中出现的次数少于parent_id
的2次
希望对您有所帮助。