laravel框架少见方法详解
程序员文章站
2022-05-24 14:11:55
...
1.whereDate() 方法
1 $q->where('created_at', '>=', date('Y-m-d').' 00:00:00'));
以前查数据时,直接用where条件来比值判断,但是格式就会有严格的要求,如果上面的代码 第三个参数 是 date('Y-m-d') 而不加 后面的00:00:00 这样在数据库里面就会找不到
而判断是否相等 也都是对格式严格的要求
$q->whereDate('created_at', '=', date('Y-m-d'));
现在用whereDate,laravel自带的方法,就会自动帮你进行日期格式处理,保证date与搜索的格式是匹配的。
$q->whereDay('created_at', '=', date('d')); $q->whereMonth('created_at', '=', date('m')); $q->whereYear('created_at', '=', date('Y'));
例如上面的代码,只搜索天数为某值的时候,用whereDay,会去数据库里搜索某一天与其匹配的值。
2.wherePivot() 方法
一般这个方法的活动场景,模型中
class Company extends \Eloquent{...
public function memberApplies() { return $this->belongsToMany('App\User', 'user_company_applies') ->wherePivot('apply_status', UserCompanyApply::applyVerify) ->wherePivot('type', UserCompanyApply::TYPE_USER); }
wherePivot什么意思?,首先是company和user表,建立多关联的关系,关联表是user_company_applies
首先如果不加wherePivot,怎么显示
数据库这样
、
控制器:
显示3条数据,
也就是从中间表里找company_id为1对应的user_id的数据,在把user_id的值带到user表里去查询有哪些数据,也就是这3条,这是原来的多对多的流程
现在加上了wherePivot方法,无非是加上一个判断条件,获得多对多的数据之后,再去查找中间表里的apply_status和type字段,查找2个都为1的数据是那条,有则显示
数据库现在改成这样
2个值都为1了,看能不能查询出 user_id为2525的这条数据
开始测试
OK