【一淘模板整理分享】Laravel模型时间戳的8个使用小技巧(laravel模型事件)

admin886156年前0条评论

下面由Laravel教程栏目给人人分享8个Laravel模子时日戳应用小技术,看看你都没用过,没用就快来收藏吧,希望对于人人有所帮助!

【一淘模板整理分享】Laravel模型时间戳的8个使用小技巧(laravel 模型事件) 技术教程

默认状况下,Laravel Eloquent 模子默认数据表有 created_at 以及 updated_at 两个字段。固然,咱们能够做患上多自界说配置,实现患上多有趣的性能。下面举例说明。

1.禁历时日戳

如果数据表不这两个字段,生存数据时 Model::create($arrayOfValues); ——会看到 SQL errorLaravel 在主动添补 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.修改时日戳日期/时日体例

下列内容援用官网文档officialLaraveldocumentation:

默认状况下,时日戳主动体例为 '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_atascending

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,也希望更新下级瓜葛的记载。

比方,某个co妹妹ent被更新,那末您希望将post表的updated_at也更新。

那末,您需要在模子中界说$touches属性:

class Co妹妹ent 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);

 

你可能想看:

本文链接:https://addon.ciliseo.com/yi-tao-mo-ban-zheng-li-fen-xiang-laravel-mo-xing-shi-jian-chuo-de-8-ge-shi-yong-xiao-ji-qiao.html

Laravel模型时间戳小技巧模型模板时间字段您需要属性格式你的这么做情况下方法技巧使用
使用灭火器对准火焰的什么部位使用灭火器人要站在上风口还是下风口使用的英文使用灭火器时人应该站在什么位置使用伪造变造的行驶证一次记几分使用原驾驶证驾驶的受到何种处罚使用这部iphone重设你的id密码是什么意思使用飞机杯的好处和坏处有哪些使用伪造变造的机动车号牌一次记几分正确使用灭火器的四个步骤使用deepseek收费吗使用互联网时会存在哪些安全风险使用权资产使用权资产账务处理新会计准则使用权资产是什么意思使用互联网会存在哪些安全风险使用有毒物品作业场所劳动保护条例使用灭火器是站在上风口还是下风口使用校车的学校、并向未成年人讲解校车安全乘坐知识,培养未成年人校车使用灭火器扑救火灾时要对准火焰的什么部位喷射使用英文使用代码生成器应用生成一个代码并在下方输入使用场景英文使用箭头将所示图标移动到指定的轨道中使用冰水浴法时双金属片温度计或数字温度计应校准到什么温度使用中使用说明使用chatgpt模板模板尺寸规格及价格模板厂家批发模板读音模板素材模板图片ppt免费模板多少钱一张模板尺寸规格1830*950价格模板和模版有什么区别模板免费模板王模板王字库模板规格尺寸模板ppt免费模板ppt模板之家模板工程模板尺寸模板英文模板匹配模板文件不存在user/index.html模板方法模式模板特化模板森林模板元编程时间时间计算器时间短怎么才能治得好时间短怎么调理回来时间窗时间显示大屏时间校准时间继电器的符号及图形时间静止时间过的太快的经典句子时间校准北京时间显示时间计算天数计算器时间悖论时间戳时间显示时分秒在线时间计算器在线计算天数时间计算时间都去哪了时间秒表时间轴你的婚礼你的名字你的婚礼免费观看完整版你的颜色你的谎言也动听你的婚礼电影完整版免费播放你的样子你的欲梦你的拼音你的错误你的尺寸太大了你的婚礼电影免费完整版在线观看你的雪人能活多久by稚楚你的雪人能活多久by稚楚笔趣阁你的婚礼在线观看完整版电影你的名字在线观看完整版免费高清你的影月月你的盐我的醋你的名字线上看你的爱不离不弃方法的英文方法论方法总比困难多方法的拼音方法学验证的内容包括哪些

网友评论

扫一扫二维码添加客服微信

关于我们建站招商建站服务