1.whereDate() 方法

 $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()之类的有结果之中

laravel框架少见方法详解的更多相关文章

  1. TP框架I方法详解

    TP框架I方法详解   I方法是ThinkPHP众多单字母函数中的新成员,其命名来自于英文Input(输入),主要用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下:I('变量类型. ...

  2. laravel框架目录结构详解

  3. laravel 框架配置404等异常页面的方法详解(代码示例)

    本篇文章给大家带来的内容是关于laravel 框架配置404等异常页面的方法详解(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在Laravel中所有的异常都由Handl ...

  4. Laravel处理session(会话)的方法详解

    在Web应用程序中,有必要识别跨越请求的用户并为每个用户保存数据,为此,像Laravel这样的框架提供了一种称为会话的机制.本篇文章就来为大家介绍关于Laravel处理session(会话)的方法. ...

  5. Python的Django框架中forms表单类的使用方法详解

    用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...

  6. CURL使用方法详解

    php采集神器CURL使用方法详解 作者:佚名  更新时间:2016-10-21   对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程 ...

  7. JAVA 注解的几大作用及使用方法详解

    JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...

  8. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

  9. Java提高篇——equals()与hashCode()方法详解

    java.lang.Object类中有两个非常重要的方法: 1 2 public boolean equals(Object obj) public int hashCode() Object类是类继 ...

随机推荐

  1. solr默认查询设置

    在搜索过程中,如果我们每次请求中都传入很多固定的参数,会很繁琐,这里再solrconfig.xml中初始化定义一些不经常改动的搜索参数: <requestHandler name="/ ...

  2. 批量更新memcached缓存

    假如系统里有3类数据company,user,product 利用维护版本号version的方式达到批量更新缓存的效果 memcache.Add("company",cversio ...

  3. Web分布式部署,跨应用程序Forms身份验证的集成方案

    最近一个项目要求进行分布式部署.保证在双十一期间系统的正常运行,虽然该系统平时访问量不是很大,但是基于业务需要,必须在至少两台服务器上部署. 该系统需要登录后才可以使用,首先需要解决分布式部署的用户状 ...

  4. POJ 1287 Networking (最小生成树)

    Networking Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit S ...

  5. 用Shell实现俄罗斯方块代码(Tetris.sh)

    本代码来源于网络: 文件下载地址:http://files.cnblogs.com/files/DreamDrive/Tetris.sh #!/bin/bash # Tetris Game # 10. ...

  6. iOS小技巧 - 和屏幕等宽的Table分割线

    前言 因为本人也是学习iOS才一个多月,在写程序的过程中经常会遇到一些看似应该很简单,但是要解决好却要知道一点小trick的问题. 因此后面会陆续记一些这类问题,一来加深印象,二来也可以做个备忘录. ...

  7. css3简易实现图标动画由小到大逐个显现

    在制作网站时避免图片太平淡经常会用到动画效果:由小到大跳跃出现.这种效果很有视觉冲击力,显著提高关注度~ 原理:利用css3的动画属性@keyframes@-moz-keyframes@-webkit ...

  8. 【转载】Deep Learning(深度学习)学习笔记整理

    http://blog.csdn.net/zouxy09/article/details/8775360 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫 ...

  9. sql深入理解

    我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么我们还能保证下一段时间系统还能流畅的运行吗?我们还 ...

  10. 【原创】ORA-04068: 已丢弃程序包 的当前状态研究

    不久前在市检的生产环境上有个存储过程执行报错,错误信息如下: ORA: 已丢弃程序包 的当前状态 ORA: package "ZHANGXSH.PR_TEST" 的当前状态失效 O ...