分享8个Laravel模型时间戳使用技巧小结

来源:脚本之家  责任编辑:小易  

怎么从iCloud下载照片?iPhone的拍照功能一直深受苹果用户们的喜爱,相信有许多用户习惯将保存在手机中的照片备份到iCloud中,以避免手机中的照片意外丢失。不过有时候我们也需要将iCloud中的照片下载到电脑上使用。那么如何将iCloud中的照片下载到电脑上?下面小编与大家一起讨论iCloud文件下载到本地的方法。怎么从iCloud下载照片具体操作步骤如下:第一步:需要我们使用AppleID登录iCloud官网。第二步:登录成功之后,点击进入照片选项。第三步:根据时间日期,选择你想要下载的照片,批量选择的方法是:按住键盘上的Ctrl键,然后鼠标左击就可以了。第四步:点击界面右上角的【下

 默认情况下,Laravel Eloquent 模型默认数据表有 created_at 和 updated_at 两个字段。当然,我们可以做很多自定义配置,实现很多有趣的功能。下面举例说明。

老兵不死,只是凋零,随着英雄的背影渐行渐远,我们脑海中关于每个乒乓球运动员的回忆却依旧清晰,打开对二王一马时代的记忆闸门,可以说年长的王励勤和马琳的二人较量拉开了这个时代的序幕,吹响这个时代的号角。是的,王励勤、马琳和王皓他们三个是笔者心目中最喜欢的运动员,关于他们的一切,都在脑海中永存。如果回顾三人的职业生涯,我们会发现:数字虽枯燥,却很直观。王励勤、马琳、王皓3人在世界乒坛核心圈的时期分别是1999年至2009年,1999年至2009年,2004年至2013年,3人均实现了连续十年辉煌,这是包括孔刘在内的数拨国手可望不可及的高度。长时间保持稳定战绩,使他们三人分别收获了16个、18个、18

1. 禁用时间戳

相信很多消费者都对一些汽车4S店的0元购车优惠活动不算陌生,就是这么一个看是优惠的活动,让许多想买车却没钱的准车主成功的分期购买了自己早已心仪的那辆车,殊不知,自己已经中了优惠下的陷阱。什么是零首付,无外乎就是在做汽车分期的时候,不用去交付那百分之几的首付,只需交付购置车辆时产生的购置税和保险费以及不多的上牌,更有甚者,有的4S店会直接把这一部分开支也一并放到分期付款中。其实能满足零首付的条件并不是单独一家银行就能完成的,这需要4S店先像银行方把初合约上首付的钱给贷款贷出来,然后在把剩下本该车主支付的钱,4S店方会利用抵押的办法从民间小额贷款公司给贷出来,完成以上步骤才能达到最后的零首付提车。

如果数据表没有这两个字段,保存数据时 Model::create($arrayOfValues); —— 会看到 SQL error。Laravel 在自动填充 created_at / updated_at 的时候,无法找到这两个字段。

是,我是妖,怎么,你害怕了?我狂笑着看着他,眼前的人早已不复当初的青涩了,泪水在眼里滚动,随着我尖锐的笑声滑过脸颊。多少年了,你几经沉浮。我就这么不离不弃的陪着你,守着你?景阳驿站那场大火你可记得?长安城外的刺杀你可记得?江洲断魂崖你可记得?你不记得了,于你而言我不过是一普通女子罢了。没权没势,没有得力的家族,在你落魄的时候甘愿陪着你为你铺床叠被,在你有危险的时候为你挡着的人肉盾牌罢了!景阳那场大火我废了半身灵力才把你带出去,后背上那吓人的疤痕还历历在目。长安城外你遇到暗杀,我为你挡了穿胸而过的一剑,你可知那剑上有毒,我是怎样熬过了万蚁噬心之痛!断魂崖下我几乎废了八成修为才你带回来。我陪着你八

禁用自动填充时间戳,只需要在 Eloquent Model 添加上一个属性:

class Role extends Model { public $timestamps = FALSE; // ... 其他的属性和方法 }

2. 修改时间戳默认列表

假如当前使用的是非 Laravel 类型的数据库,也就是你的时间戳列的命名方式与此不同该怎么办? 也许,它们分别叫做 create_time 和 update_time。恭喜,你也可以在模型种这么定义:

class Role extends Model { const CREATED_AT = 'create_time'; const UPDATED_AT = 'update_time';

3. 修改时间戳日期 / 时间格式

以下内容引用官网文档 official Laravel documentation:

默认情况下,时间戳自动格式为 'Y-m-d H:i:s'。 如果您需要自定义时间戳格式,可以在你的模型中设置 $dateFormat 属性。这个属性确定日期在数据库中的存储格式,以及在序列化成数组或 JSON 时的格式:

class Flight extends Model { /** * 日期时间的存储格式 * * @var string */ protected $dateFormat = 'U'; }

4. 多对多:带时间戳的中间表

当在多对多的关联中,时间戳不会自动填充,例如 用户表  users 和 角色表 roles 的中间表 role_user。

在这个模型中您可以这样定义关系:

class User extends Model { public function roles() { return $this->belongsToMany(Role::class); } }

然后当你想用户中添加角色时,可以这样使用:

$roleID = 1; $user->roles()->attach($roleID);

默认情况下,这个中间表不包含时间戳。并且 Laravel 不会尝试自动填充 created_at/updated_at

但是如果你想自动保存时间戳,您需要在迁移文件中添加 created_at/updated_at,然后在模型的关联中加上 ->withTimestamps();

public function roles() { return $this->belongsToMany(Role::class)->withTimestamps(); }

5. 使用 latest() 和 oldest() 进行时间戳排序

使用时间戳排序有两个 “快捷方法”。

取而代之:

User::orderBy('created_at', 'desc')->get();

这么做更快捷:

User::latest()->get();

默认情况,latest() 使用 created_at 排序。

与之对应,有一个 oldest() ,将会这么排序 created_at ascending

User::oldest()->get();

当然,也可以使用指定的其他字段排序。例如,如果想要使用 updated_at,可以这么做:

$lastUpdatedUser = User::latest('updated_at')->first();

6. 不触发 updated_at 的修改

无论何时,当修改 Eloquent 记录,都将会自动使用当前时间戳来维护 updated_at 字段,这是个非常棒的特性。

但是有时候你却不想这么做,例如:当增加某个值,认为这不是 “整行更新”。

那么,你可以一切如上 —— 只需禁用 timestamps,记住这是临时的:

$user = User::find(1); $user->profile_views_count = 123; $user->timestamps = false; $user->save();

7. 仅更新时间戳和关联时间戳

与上一个例子恰好相反,也许您需要仅更新 updated_at 字段,而不改变其他列。

所以,不建议下面这种写法:

$user->update(['updated_at' => now()]);

您可以使用更快捷的方法:

$user->touch();

另一种情况,有时候您不仅希望更新当前模型的 updated_at,也希望更新上级关系的记录。

例如,某个 comment 被更新,那么您希望将 post 表的 updated_at 也更新。

那么,您需要在模型中定义 $touches 属性:

class Comment extends Model { protected $touches = ['post']; public function post() { return $this->belongsTo('Post'); } }

8. 时间戳字段自动转换 Carbon 类

最后一个技巧,但更像是一个提醒,因为您应该已经知道它。

默认情况下,created_at 和 updated_at 字段被自动转换为 $dates,

所以您不需要将他们转换为 Carbon 实例,即可以使用 Carbon 的方法。

例如:

$user->created_at->addDays(3); now()->diffInDays($user->updated_at);

就这样,快速但希望有用的提示!

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

laravel怎么定义整点的时间戳数组

Laravel 修改 timestamps 为 unix 时间戳

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

/**

* Class Test

* @package App

*/

class Test extends Model

{

/**

* @var string

*/

protected $table='test';

/**

* @var array

*/

protected $fillable = [

'name', 'tel'

];

/**

* @param \DateTime|int $value

* @return false|int

* @author dividez

*/

public function fromDateTime($value){

return strtotime(parent::fromDateTime($value));

}

}

这样修改以后 laravel 依然会自动维护 created_at 和 updated_at

在我们取出 created_at 这个字段依然会为我们转换为 Carbon 类型

laravel框架中数据库的时间戳怎么遍历为日期

使用laravel框架的orm中的find方法,得到一条数据,如果在该数据不toArray的方法,对数据的时间戳进行转换成时间

  • 本文相关:
  • laravel框架eloquent orm新增数据、自定义时间戳及批量赋值用法详解
  • laravel timestamps 设置为unix时间戳的方法
  • laravel 时间格式转时间戳的例子
  • php实现telnet功能示例
  • php设计模式之观察者模式定义与用法经典示例
  • yii 2中的load()和save()示例详解
  • php扩展开发入门教程
  • php调用mailgun发送邮件的方法
  • 如何使用php获取指定日期所在月的开始日期与结束日期
  • laravel5.1 框架表单验证操作实例详解
  • php设计模式之数据访问对象模式(dao)原理与用法实例分析
  • 简单的php留言本实例代码
  • php中文验证码实现示例分享
  • laravel怎么定义整点的时间戳数组
  • laravel框架中数据库的时间戳怎么遍历为日期
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved