Laravel 5.1 数据库添加索引之后,数据查询不出,什么原因?

昨天数据库进行优化,对表的两个字段添加了索引。

创建索引的SQL情况如下:
ALTER TABLE inventory ADD KEY inventory_gid_sstatu(gid,sstatu);

使用 Laravel 5.1MySQL 5.6

// iid 主键 ,gid 类似商品id , sstatu 卖出的状态  oid是账单号
Inventory::orderBy(isset($data['sort'])?$data['sort']:"iid",isset($data['order'])?$data['order']:"asc")
            ->where(function($query) use($data){
                if(isset($data['gid']) && $data['gid'] != ''){
                    $query->where('gid',$data['gid']);
                }
                if(isset($data['sstatu']) && $data['sstatu'] != ''){
                    $query->where('sstatu',$data['sstatu'] == 0 ?false:true);
                }
                if(isset($data['oid']) && $data['oid'] != ''){
                    $query->where('oid',$data['oid']);
                }
  })->paginate($data['rows']);

问题描述,单独只有 sstatu 条件可以正常查询;但是加上查询条件 gid ,查询的数据 0

求有经验的人解答,问题出在什么地方,添加索引之前是正常使用的!!!

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 4
Ryan

array_get写那么多 isset 不累嘛

6年前 评论

@Ryan 其实我是 java 程序员,后来没办法,没有系统学过 php 。

6年前 评论

找见错误原因了,但是还是不了解怎么回事。
sstatu字段,数据库类型为 bitbit 应该就是 “0” 或者 “1”,之前查询的出来,后来添加索引不行了,应该就是这个类型的原因。

 $query->where('sstatu', $data['sstatu'] == 1 ? 0x01 : 0x00);

将查询条件改为这个样子,就好了。

6年前 评论

@KubiLi 01 这样的数据可以用 tinyint(1) 类型存储

6年前 评论

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