好的,我想使用“Laravel查询”构建器来检查特定用户的名称是否在列中出现两次。例如,在我的程序中,当新用户注册时,他被随机地分配给用户作为该用户的孩子。所以新用户将有一个像parent_id这样的字段。一个用户不能有两个以上的孩子,所以我想使用查询构建器查询我的数据库,以获得任何在parent_id列中没有出现两次ID的随机用户
答案 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
,其DB
中parent_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'
希望这会对你有所帮助。