laravel稀罕的Eloquent模型的用法

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(createdat,=,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);
}

  1. Carbon 类
    Carbon是laravel处理时间类型的一个类。

  2. diffForHumans()方法

$article->created_at->diffForHumans();
diffForHumans方法,可以把日期转换成 “1 hours age”、“4 years age” 这样的格式,同时,它还支持本地化,可以把其转换成中文形式的“1小时前”、“4年前”等。

可以在 app/Providers/AppServiceProvider.php 的 boot() 方法中添加下面的代码来设置全局本地化:

public function boot()
{
\Carbon\Carbon::setLocale(‘zh’);
}
设置好之后,在输出时间的地方调用:

$article->created_at->diffForHumans();
输出的结果会是 查article表里created_at字段的值是多少,在统计现在时间和它相差多少,如果现在时间比值大18分钟,会显示 “18 minutes ago” 。

  1. diffInDays(), diffInHours(), diffInMinutes()

这几个方法都是差不多和Carbon一起使用的,例如

public function getCloseSignDayAttribute()
{
day=Carbon::now()>diffInDays( this->close_time, false);
return day>0? day : 0;
}
复制代码
这个方法是在Lession模型中的,diffInDays就是统计,现在的时间和lession表里close_time字段的值之间相差多少时间。相差的时间以天的格式返回,例如数据库里是2016-10-10 现在时间是 2016-9-10 返回的就是30天

carbon::now就是取当前时间的意思,加个diffInday统计相差时间,第一个参数$this->close_time,是模型中close_time这个字段,模型就是去哪张表找,而这里close_time就从哪个字段找

下面看一下这个模型的$dates属性,官方文档有介绍

复制代码
protected $dates = [
‘start_time’,
‘close_time’,
‘created_at’,
‘updated_at’
];

大体意思dates里面填写的字段,会自动调整时间。 diffInHours(), diffInMinutes() 方法就跟diffInDays()一个道理了,一个统计和 close_time相差多少小时,相差多少分钟,使用形式都是一样,返回值不同

minute=Carbon::now()>diffInMinutes( this->close_time, false);
$minute返回相差多少分钟
3. addDay()方法

    $less = Lesson::find(22);
    $r = $less->start_time->addDay(2);

将start_time时间,增加2天,输出出来。

4.模型类
arr=DB::table(archives)>where(id,2)>pluck(title);// arr = DB::table(‘archives’)->where(‘id’,’>’,1)->lists(‘title’);//获取一张表的一列字段
$arr = DB::table(‘archives’)->where(‘id’,’>’,1)->toSql();//获取查询的SQL语句,公用于条件,不能用于get()之类的有结果之中

原文链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值