laravel框架少见方法详解
2018-06-22 04:56:56来源:未知 阅读 ()
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
3. Carbon 类
Carbon是laravel处理时间类型的一个类。
1. 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" 。
2. 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()之类的有结果之中
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- laravel实现批量更新多条记录的方法示例 2020-02-19
- Laravel中七个非常有用但很少人知道的Carbon方法 2020-02-15
- Laravel如何使用数据库事务及捕获事务失败后的异常详解 2020-02-08
- Laravel 中 “规范” 的开发短信验证码发送功能 2020-02-08
- Laravel中获取路由参数Route Parameters的五种方法示例 2020-02-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash