laravel查询报错

Laravel

1. 运行环境

1). 当前使用的 Laravel 版本?8.1

2). 当前使用的 php/php-fpm 版本?

PHP 版本:8.1

php-fpm 版本:

3). 当前系统 Windows 10

4). 业务环境

5). 相关软件版本

2. 问题描述?

//: <> (代码问题的话,请提供一份最短的,可复现问题的代码。或者相关代码) 我想查询brand表中数据,条件是goos表中相关brandid的数量不能小于3,但报错,求大神指教写法!

3. 您期望得到的结果?

4. 您实际得到的结果?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案
DB::table("dp_goods_brand")->where('status',1)->whereRaw("3 > (select count(*) from dp_goods where dp_goods.brand_id = dp_goods_brand.id and dp_goods.status = 1)")->get();
1年前 评论
z9990225s_ (楼主) 1年前
____Laravel 1年前
小猪蹄子 (作者) 1年前
小猪蹄子 (作者) 1年前
____Laravel 1年前
讨论数量: 11
DB::table('dp_goods')->where('status',1)->whereColumn('brand_id','dp_goods_brand.id')->selectRaw('count(*)')
1年前 评论
z9990225s_ (楼主) 1年前
z9990225s_ (楼主) 1年前

file

where 的常用参数签名是 字段, 操作符, ,操作符省略时为 =,你这里的参数就有问题呐。

其次,按照你的描述,应当使用关联表+子查询的方式来做才对。


换句话说,你应该先把 SQL 出来,再转成查询构建器的方式,至于怎么转换,你可以让 ChatGPT 帮你弄,也可以找一些在线的转换工具。

1年前 评论
DB::table("dp_goods_brand")->where('status',1)->whereRaw("3 > (select count(*) from dp_goods where dp_goods.brand_id = dp_goods_brand.id and dp_goods.status = 1)")->get();
1年前 评论
z9990225s_ (楼主) 1年前
____Laravel 1年前
小猪蹄子 (作者) 1年前
小猪蹄子 (作者) 1年前
____Laravel 1年前

where不能你那样用吧;你可以看下whereRaw 和DB::raw()的用法;查询构造器《Laravel 8 中文文档》

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!