- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一个 Laravel 应用程序,其中我有两个非常相似的 QueryBuilder
但在两种情况下都会产生不同的结果。
查询 1:
$ids = $this->model->leftJoin('feed', 'agents.identifier', '=', 'feed.identifier')
->whereRaw('feed.active <> agents.feed_status')
->pluck('id');
dd(count($ids)); // print 485236
查询 2:
$ids = $this->model->leftJoin('feed', 'agents.identifier', '=', 'feed.identifier')
->where('feed.active', '<>', 'agents.feed_status')
->pluck('id');
dd(count($ids)); // print 4259
我想知道这两个 QueryBuilder 之间的主要区别。为什么它产生不同的结果,尽管它看起来相同?
哪个查询返回正确的结果?如果我想从 feed_status
不等于 feed.active
的代理中找到记录。
最佳答案
看来我已经得到澄清了。然而,我想在这里分享我的研发。以防其他人遇到同样的问题。
我已经打印了原始查询
并获取where()
似乎将第三个参数视为string
比较而不是field
比较。这就是为什么结果似乎不同的原因。
但是,当我们使用 whereRaw()
运行查询时,它会将其视为表字段比较。
Laravel 代码:
$ids = $this->model->leftJoin('feed', 'agents.identifier', '=', 'feed.identifier')
->whereRaw('feed.active <> agents.feed_status')
->pluck('id');
MySql 查询:
"select * from `agents` left join `feed` on `agents`.`identifier` = `feed`.`identifier` where feed.active <> agents.feed_status"
# feed.active <> agents.feed_status
Laravel 代码:
$ids = $this->model->leftJoin('feed', 'agents.identifier', '=', 'feed.identifier')
->where('feed.active', '<>', 'agents.feed_status')
->pluck('id');
MySql 查询:
"select * from `agents` left join `feed` on `agents`.`identifier` = `feed`.`identifier` where `feed`.`active` <> 'agents.feed_status'"
# where feed
.active
<> 'agents.feed_status'
关于mysql - Laravel QueryBuilder - 相同查询的 `where()` 和 `whereRaw()` 的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56489533/
我需要调用以下方法进行查询: public function getDistanceFromLatLonInKm($lat1,$lon1,$lat2,$lon2) { ... $d = R *
我正在尝试执行此查询,但出现错误(格式错误的 UTF-8 字符,可能编码不正确): DB::table('my_table')->select(DB::raw("id")) ->whereRa
我有一个 id 列表,它们是排序后集合的 id,例如: $orderedIds = "2,18,4,1,17,5,6,16,15,14,13,11,12,10,9,8,7,3" 我想用 whereRa
我正在尝试使用此查询从数据库中获取值 $vouchers = MerchantVoucher::where([ 'merchant_id' => $this->merchant
根据文档,这应该有效: return $query->whereRaw("lang = '?'",array(App::getLocale())); 但它不起作用: return $query->w
我在一个项目中使用 Laravel 5.1 和 Eloquent ORM。我需要查询数据库来查找使用其姓名或部分姓名的人员。 如果一个人的名字叫 John Doelington,我希望所有搜索词 jo
所以我有一个查询,根据用户输入的内容,列、运算符和比较可能会有所不同。例如,如果用户选择过滤包含字符串一部分的名称列。 当我尝试绑定(bind)运算符(operator)时出现问题。这是查询 $acc
我们想要那些提示,通过 Eloquent 关系,哪个生命周期(created_at - now())比提示生命周期(存储在 complain_type 表中的生命周期数量)更重要。 01.提示表: +
在Laravel我正在使用 Eloquent ORM获取与组关联的所有用户。 (这是一个遗留数据库,所以不幸的是它不遵循 Laravel 约定)。 users 表有一个带有 GroupId 的列,它是
我的项目遇到问题。我的数据库中有逗号分隔的值,我想显示与我选择的任何框匹配的数据。但我没有得到预期的结果 这是我的查询 $products = $products->where('status', 1
我收到错误:SQLSTATE[42P18]: Indeterminate datatype: 7 ERROR: could not determine data type of parameter $
在下面的代码中,我加入了两个表并搜索了一个专有名称: const homesWithUsers = knex('homes') .join('users', 'homes.id', 'users.
我有列命名为 PlanCost Discount AmountPaid和一个包含 Due 的标签 在这里,我试图只显示 PlanCost != AmountPaid 所在的行 这是我的整个查询 $g
Laravel 对此的 Eloquent 查询是什么: select * from `jobs` where ( 400000 between min_salary and max_sal
我正在开发一个 Laravel 应用程序,其中我有两个非常相似的 QueryBuilder 但在两种情况下都会产生不同的结果。 查询 1: $ids = $this->model->leftJoin(
我正在尝试查找今天创建的所有记录,并以列 functional_id 的 1 开头。 我得到以下语法错误: SQLSTATE[42000]: Syntax error or access violat
当我执行下面的范围查询时,我没有得到任何结果,但是当我在数据库上执行生成的 SQL(带有转录的绑定(bind))时,我得到了预期的结果。我可以在没有范围的情况下查询模型,结果符合预期。 这是检查一个点
我是一名优秀的程序员,十分优秀!