你可能不知道的 Laravel Eloquent 操作

简介: 你可能不知道的 Laravel Eloquent 操作

Laravel Eloquent 提供了太多现成的方法,但是官方文档上有些东西是看不到的,这就需要日常开发的积累,源码的查看,以及相互之间的分享。


今天主要分享一下我知道的可能你不知道的而且文档没有的 Eloquent 中的几个操作。


push


大概率会碰到的。假设现在用户模型 User 和 微信 Wechat 是一对一关系,然后进行以下操作:

$user = User::where('name', 'wuqinqiang')->first();
$user->age = 18;
$user->wechat->nickName = "Remember";
$user->save()

那么此时,会保存用户信息,但是并不会保存对应 Wechat 的关联信息,想让它一起保存咋么办?也很简单。把 save 换成 push 即可。

$user->push();

我不想要模型事件


我们都知道,在使用 Eloquent 模型的时候,创建或者更新模型这些操作的时候,是有几个阶段的事件的,有时候可能因为业务上的需要,可能会监听某个事件执行某些操作。比如下面这段监听对应事件执行对应操作的代码:

public static function boot()
    {
        parent::boot();
        static::creating(function ($model) {
           //业务逻辑
        });
    }

那要是不想在操作时触发任何事件则么办?你可以执行一个回调函数而无需触发任何事件:

$user = User::withoutEvents(function () {
return //保存或者更新代码
});

模型是否被动过手脚


想知道从数据库查询获取出来的模型是否被动过手脚 (修改)? 也有办法。可以使用 isDirty

$ user = User :: where('name','wuqinqiang')->first();
$ user-> isDirty(); // 还没被动过 返回 false
$ user-> name ='curry';  
$ user-> isDirty(); //模型被动过了 返回true 
$ user-> isDirty('email'); // 可以传入参数  验证某个参数是否被动过,这个我还没碰过 当然 false
$ user-> isDirty('name'); // true

如果你还想具体了解到哪些是被动过了,可以使用:


$user->getDirty();  你将得到一个数组 ["name" => "curry"]

我想看原始数据

既然上面提到是否被动过手脚,那动过手脚之后我又想看看之前的模样 (ps: 人就是这样麻烦)。强大的 Laravel Eloquent 也可以办到:

$ user = User :: where('name','wuqinqiang')->first();
$user->name = 'curry';
$user->getOriginal(); // 返回数组 "name" => "wuqinqiang"
$user->getOriginal('name'); //指定要看哪个属性的原值  "wuqinqiang"
相关文章
|
Linux 应用服务中间件 PHP
Linux下搭建PHP环境-源码编译安装PHP7.2
Linux下搭建PHP环境-源码编译安装PHP7.2
697 0
|
10月前
|
Linux Shell
问题记录:解决Linux登录故障,/etc/passwd配置受损该怎么操作
修复/etc/passwd文件是解决Linux登录故障的重要步骤。通过进入单用户模式、挂载文件系统、恢复或手动修复/etc/passwd文件,可以有效解决该问题。保持定期备份系统配置文件是预防此类问题的最佳实践。
343 5
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
460 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
消息中间件 存储 安全
openStack核心组件的工作流程
openStack核心组件的工作流程
260 12
|
Java 应用服务中间件 PHP
[笔记]Nginx使用之作为图片服务器
[笔记]Nginx使用之作为图片服务器
536 0
|
算法 安全 Java
真实世界的密码学(二)(1)
真实世界的密码学(二)
306 3
|
Go Windows
知识卡片生成器:汇文明朝体让文字出彩
知识卡片生成器:汇文明朝体让文字出彩
467 1
|
Java Nacos 开发工具
nacos服务端2.0.3 问题之启动报错如何解决
Nacos是一个开源的、易于部署的动态服务发现、配置管理和服务管理平台,旨在帮助微服务架构下的应用进行快速配置更新和服务治理;在实际运用中,用户可能会遇到各种报错,本合集将常见的Nacos报错问题进行归纳和解答,以便使用者能够快速定位和解决这些问题。
2319 93
|
机器学习/深度学习 存储 缓存
2024机器遗忘(Machine Unlearning)技术分类-思维导图
本文通过思维导图的形式,详细介绍了机器遗忘技术的分类、优缺点、面临的威胁和攻击以及防御机制,并探讨了评估机器遗忘系统有效性的方法,包括精确遗忘和近似遗忘技术,以及在数据隐私保护和法律遵从方面的应用。
1139 5
|
Kubernetes 网络虚拟化 网络架构
k8s 网络组件详细 介绍
k8s 网络组件详细 介绍