首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询是否为空值

问查询是否为空值
EN

Stack Overflow用户
提问于 2021-02-19 11:30:04
回答 2查看 49关注 0票数 0

当我有多个变量可以为空时,有没有更好的方法来构造一个mysql查询来处理"is null"?

代码语言:javascript
复制
DB::connection('mysql')->select('select * from db where width = ? and height = ? and length = ? and color = ?', [$width, $height, $length, $color]);

而不是

代码语言:javascript
复制
if ($width == null) {
  DB::connection('mysql')->select('select * from db where width is null and height = ? and length = ? and color = ?',[$height, $length, $color]);
}elseif($height == null) {
...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-19 13:05:02

此答案可能不使用您的表。但我很久以前就偶然发现了这一点。在我示例中,我使用了model,这是一个由列名和列值组成的数组。

数组:

代码语言:javascript
复制
$filterData = [
  'width' => 21.0,
  'height' => 11.5,
  'length' => null
];

查询:

代码语言:javascript
复制
$mainQuery = Furniture::query();

foreach($filterData as $columnName => $columnValue){
  $mainQuery = $mainQuery->where($columnName, $columnValue);
}

要查看输出,请执行以下操作:$mainQuery->toSql();

票数 1
EN

Stack Overflow用户

发布于 2021-02-19 12:39:57

使用查询构建器解决了我的问题。当变量为null时,它会自动将查询更改为"is null“。

代码语言:javascript
复制
DB::connection('mysql')->table('db')->where('width', $width)->where('height', $height)->where('length', $length)->where('color', $color)->get();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66271382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档