Laravel 查询器orWhere使用

之前做开发的过程中,一直在使用原生的sql,在接触laravel框架之后,开始使用laravel 的数据库查询构造器,一些常用的查询语句如select()、where等都比较好理解,但是今天在使用or条件查询时遇到了问题,没有办法将两个or条件进行内部关联,所以在百度之后找到了解决方案,使用闭包的方式。

$query->where(function ($query) use (参数1) {
        $query->where('字段1',参数1)->orWhere('字段2', '=',参数1;
    });
}

上述写法等同于

where (条件1 or 条件2)

由此即可完成需求

BIGINT UNSIGNED value is out of range 报错解决

今天在进行数据分析时,遇到了一个小坑,当两个字段相减运算时,如果其中一个或两个字段的类型的unsigned无符号类型,且结果值小于0测绘出现下列报错。

BIGINT UNSIGNED value is out of range in ‘(`refund`.`ctime` – `refund`.`atime`)

解决方案和思路如下:

一、修改字段类型

二、使用cast函数转字段为signed类型

select cast(字段1 as signed) – cast(字段2 as signed)

问题解决。