Laravel如何无需二次查询判断查询结果$categories是否包含$request->newParent对应id
可以实现,不需要发起额外的数据库查询。
你调用get()方法后已经将符合条件的所有数据全部加载到内存中,得到的$categories是Laravel框架的Collection集合实例,所有集合操作都在本地内存执行,不会触发新的SQL请求。
具体实现方法
- 最简通用写法
直接调用集合的contains方法指定匹配字段和目标值,返回布尔值代表是否存在匹配项:
$isExists = $categories->contains('child_id', $request->newParent);
- 自定义逻辑写法
如果需要强类型校验或者额外判断条件,可以使用回调写法自定义匹配规则:
$isExists = $categories->contains(function ($relationItem) use ($request) { // 可在此处添加任意自定义判断逻辑,示例为强类型匹配 return $relationItem->child_id === $request->newParent; });
如果需要验证确实没有产生额外查询,可以在代码执行前后开启SQL日志打印校验,不会出现新的查询语句。
内容的提问来源于stack exchange,提问作者Djozeph
相关产品推荐
相关产品推荐

