首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel Eloquent:有没有办法获得改变后的模型的原始关系?

Laravel Eloquent是Laravel框架中的一个ORM(对象关系映射)工具,用于简化数据库操作。在使用Laravel Eloquent时,可以通过以下方式获得改变后的模型的原始关系:

  1. 使用getOriginal()方法:在Laravel Eloquent中,每个模型都有一个getOriginal()方法,可以返回模型在数据库中的原始属性值。通过调用该方法,可以获取到改变后的模型的原始关系。例如:
代码语言:txt
复制
$user = User::find(1);
$user->name = 'John Doe';
$user->save();

$originalRelations = $user->getOriginal('relations');

上述代码中,getOriginal('relations')方法可以返回模型在数据库中的原始关系。

  1. 使用getRelation()方法:在Laravel Eloquent中,每个模型也有一个getRelation()方法,可以返回模型的关系属性。通过调用该方法,可以获取到改变后的模型的当前关系。例如:
代码语言:txt
复制
$user = User::find(1);
$user->name = 'John Doe';
$user->save();

$currentRelations = $user->getRelation('relations');

上述代码中,getRelation('relations')方法可以返回模型的当前关系。

需要注意的是,以上方法适用于一对一关系、一对多关系、多对多关系等各种类型的关系。根据具体的业务需求,可以选择合适的方法来获取改变后的模型的原始关系。

推荐的腾讯云相关产品:腾讯云数据库(TencentDB)、腾讯云云服务器(CVM)、腾讯云对象存储(COS)等。您可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Laravel代码简洁之道和性能优化

经过一番调研之后发现了一个堪称神器扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了对 INSERT & UPDATE (UPSERT) 和 INSERT...如果互相喜欢,则添加双向联系人关系,插入之前校验是否存在,存在则更新type等字段,不存在则插入双向数据 我们通过这个场景能非常好体会laravel-upsert强大,不仅减少了代码量,也减少了sql...行代码,代码行数少了3倍+ 查询sql条数:优化前5条sql,优化2条sql laravel-upsert 扩展特性 安装 composer require staudenmeir/laravel-upsert...你可以在 Eloquent 模型中使用 UPSERT 和 INSERT IGNORE 查询。...LaravelUpsert\Eloquent\HasUpsertQueries; 因为我们数据库时间是int类型,不是laravel默认时间格式,并且我们插入时间和更新时间也不是laravel默认字段

5.7K20

Laravel系列4.3】模型Eloquent ORM使用(一)

this->child->{模型Eloquent ORM使用(一) 先来说说 ORM 是什么,不知道有没有不清楚这个概念小伙伴,反正这里就一道科普一下算了。...通过前两篇文章铺垫,我们很容易就能操作 Laravel模型,但是,真正要改变是你看待这种操作数据库方式。要把数据库里数据想像成是编程语言中对象,这才是 ORM 最主要内容。...对于 Laravel 中标准 Eloquent 模型类来说,每个表都应该有两个字段,一个是 updated_at ,另一个是 created_at ,分别是两个时间戳字段,用于记录数据创建时间和修改时间...其实这段代码已经很清楚明了了,如果没有 key 就返回一个空内容,如果 key 存在于当前这个模型相关属性中,则调用一些处理方法返回。...下篇文章我们还将继续进行模型学习以及整个模型源码分析。 参考文档: https://learnku.com/docs/laravel/8.x/eloquent/9406

8.8K20

一种 Laravel 中简单设置多态关系模型别名方式

作为 Laravel 重度使用者肯定都对多态关系不陌生,以官方文档为例,文章有标签,视频有标签,那么文章和视频这些模型与标签模型关系就是多态多对多(Many To Many (Polymorphic...'App\Post', 'videos' => 'App\Video', ]); https://laravel.com/docs/6.x/eloquent-relationships#custom-polymorphic-types...我已经至少出现这个问题 3 次了,所以我一直在纠结有没有更好方法,今天突然灵机一动,实现了一个看起来似乎是一个不错方式,分享给大家。...》[2] 我们目标是使用表名来做为关系类别名,那么在模型中如何获取表名呢,直接使用模型 getTable 即可,那么整个 trait 实现如下: app/Traits/UseTableNameAsMorphClass.php...References [1] 多态多对多(Many To Many (Polymorphic)): https://laravel.com/docs/6.x/eloquent-relationships

2.7K10

Laravel 7发行说明

get 方法负责将从数据库中获取原始数据转换成对应类型,而 set 方法则是将数据转换成对应数据库类型以便存入数据库中。...路由模型绑定优化 路由模型绑定优化由 Taylor Otwell 开发贡献 。 自定义键名 有时你可能希望使用 id 以外字段来解析 Eloquent 模型。...$post; }); 隐式绑定约束 有时,当在路由中隐式绑定多个 Eloquent 模型时,可能希望对第二个 Eloquent 模型进行约束,使其必须是第一个 Eloquent 模型子类。...7 将自动确定查询范围,以使用约定猜测其父级上关系名称,以其父级检索嵌套模型。...在这种情况下,将假定 User 模型关联了名为 posts(路由参数名称复数) 关系,该关系可用于检索 Post 模型。 有关路由模型绑定更多信息,请查阅路由文档。

9K20

Laravel 实现Eloquent模型分组查询并返回每个分组数量 groupBy()

Laravel 5.5 Linux mint 18 PHPStorm 最近刚玩Laravel,手册源码还没来得及看完就跃跃欲试做了个小项目,其中有个需求是分组查询数据库中一个字段并返回每个分组中数量...')- get(); ## 原始表达式# 有时候你可能需要在查询中使用原始表达式。...要创建一个原始表达式,可以使用 DB::raw 方法: $users = DB::table('users') - select(DB::raw('count(*) as user_count...Builder对象,而此处却要一个字符串,所以改回了 $sql = DB::raw('count(*) as value'); 此时$sql是个string,至于有木有办法在此处用Model,慢慢研究吧...参考: Laravel Eloquent groupBy() AND also return count of each group 以上这篇Laravel 实现Eloquent模型分组查询并返回每个分组数量

4.2K51

Laravel系列4.4】模型Eloquent ORM使用(二)

模型Eloquent ORM使用(二) 对于模型探索我们还将继续。上篇文章中,只是简单地通过模型操作了一下数据库,并且学习了一下关联操作知识。...而另外一个 map() 函数就不用多说了,之前我们说过,Laravel PDO 在默认查询构造器情况下,走是 PDO::FETCH_OBJ ,获得集合结果中每个数据都是一个 stdClass...对象,而在 Model 下,走则是 PDO::FETCH_CLASS ,也就是会和我们指定模型类关联上,获得结果都是一个 App\Models\MTest Object 对象。...在所有模型都要继承 laravel/framework/src/Illuminate/Database/Eloquent/Model.php 类中,我们很快就能发现一个 query() 静态方法。...参考文档: https://learnku.com/docs/laravel/8.x/eloquent/9406

2.8K20

基于独立 Laravel Eloquent 组件编写 ORM 模型

下载 Eloquent ORM 相关扩展包 Eloquent ORM 作为 Laravel 框架自带 ORM 实现,还可以在 Laravel 框架之外作为独立 ORM 组件使用。...Eloquent 提供模型事件功能,还可以下载 Laravel 提供独立事件扩展包: composer require illuminate/events 上述扩展包下载完成,就可以在博客项目根目录下...模型类全局可用(为了编写 Eloquent 模型类,如果只是使用 Laravel 提供数据库查询构建器功能,则不需要这些操作)。...模型实例可能包含多个 Post 模型实例(一对多关联),这种关联关系与数据表记录关联关系对应,具体细节可以参考 Eloquent 官方文档,这里不详细展开了。...完成以上重构,运行 composer dump-auto 更新自动加载文件,让新增命名空间与目录路径映射关系生效,访问博客应用,首页、专辑页、文章页显示正常,表明代码重构成功。

1.9K10

详解Laravel设置多态关系模型别名方式

作为 Laravel 重度使用者肯定都对多态关系不默生,以官方文档为例,文章有标签,视频有标签,那么文章和视频这些模型与标签模型关系就是 多态多对多(Many To Many (Polymorphic...\Post', 'videos' = 'App\Video', ]); https://laravel.com/docs/6.x/eloquent-relationships#custom-polymorphic-types...我已经至少出现这个问题 3 次了,所以我一直在纠结有没有更好方法,今天突然灵机一动,实现了一个看起来似乎是一个不错方式,分享给大家。...》 我们目标是使用表名来做为关系类别名,那么在模型中如何获取表名呢,直接使用模型 getTable 即可,那么整个 trait 实现如下: app/Traits/UseTableNameAsMorphClass.php...总结 以上所述是小编给大家介绍Laravel设置多态关系模型别名方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家。在此也非常感谢大家对ZaLou.Cn网站支持!

1.9K21

3分钟短文:Laravel 从软删除说到模型作用域概念

我们从软删除使用,再顺便说一说模型作用域概念。 代码时间 常规删除操作分两步进行,一步是把数据从数据库中查询出来,使用laravel模型方法, 则返回是一个模型对象。...数据库表内记录直接移除了,这在重要表, 比如user,order,payment这些关系用户权限,资金支付等等重要数据资源上,物理删除是不被允许。...所以引入了软删除概念,就是在表内添加一个字段,用于标记,这一行条目是否算是删除状态。在laravel中, 这个软删除字段默认是 deleted_at。你也可以在模型中手动指定。...既然说到了模型作用域,我们不妨延伸一下,说说这个设计点,以及适用场景。 比如说有一个查询条件在代码内到处都要用,有没有简写方法,写一次其他地方可以随意调用呢?这就是本地作用域方法了。...写在最后 本文从laravel模型写操作删除动作,讲到了软删除概念。进而引申出来本地作用域和全局作用域使用。软删除几乎贯穿了我们应用始终,需要大家勤学苦练。

1.3K30

3分钟短文:Laravel slug,让你url地址更“好记”

id=42 相应地,不同用户,这个id也不相同。不同页面,也不相同。像这样带参传递路由地址,是最为原始。...使用 composer 安装: composer require cviebrock/eloquent-sluggable:^4.3 模型引入 Slug 功能 引入 eloquent-sluggable...如果你有印象的话,应该会记得laravel模型find等方法,是基于primary key进行索引,以便加快查询速度。拿到模型ID,查询该条目数据,然后返回模型实例。...完成引入,在使用模型进行查询时,就可以这样使用了: $event = Event::findBySlug('laravel-hacking-and-coffee'); $event = Event::...findBySlugOrFail('laravel-hacking-and-coffee'); 归根结底,就是使用slug字段记录查询字符串,而slug字段在对应关系中定义为 source => ‘name

3.5K11

orm 系列 之 Eloquent演化历程2

本文最后讲下Eloquent中新增对象之间关系:多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型在单个关联下属于多个不同模型...模型结构 接下来,让我们看看构建这种关联关系需要在模型中定义什么: <?...5.3 文档 ] Eloquent ORM —— 关联关系,接下去让我们看下这是怎么实现?...此处为什么会出现Manager,当项目变复杂,我们很难简单Eloquent内部组件进行有效功能了,这个时候需要一个项目的门面,帮助我们和外界沟通,让外界尽可能简单使用Eloquent,于是就出现了...参考 [ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系

2.4K30

Laravel 模型操作中一次奇妙踩坑经历

最近被 Laravel 模型一些小问题折腾死去活来,明明看着很清晰很明了代码,却偏偏不能实现功能,现在带大家来切身经历一下这次奇妙踩坑经历,代码看似很多,实则不多,大家别急着跑,哈哈。...准备 需求: 获取项目下所有任务,且需要合并公共任务 逻辑关系: • 一个项目有很多任务• 一个项目有很多项目成员• 一个任务有一个执行人 (当任务类型为:1 时候为公共事务)• 一个人有多个项目...,其中各种对应关系我就不做讲解了哈,上面也有介绍,不太清楚建议把模型关联再去细读一遍: namespace App; use Illuminate\Database\Eloquent\Model;use...不知道大家有没有理解,有需要改进地方大家在评论区留言噢。...特别鸣谢: zIym 同学[1] (咱俩一起跨坑,哈哈) 结束语 其实吧最初我也没有想这么多,想了很多其它解决办法,但是都是治根不治本,到头来发现自己对 Laravel 模型工作原理还是不熟悉,只存在简单应用上面

1.6K30

PHP-web框架Laravel-Eloquent ORM(一)

Laravel是一种基于PHP语言Web开发框架,其中Eloquent ORM功能为开发者提供了便捷对象关系映射(ORM)功能,可用于对数据库进行CRUD操作,同时也可以轻松地定义模型关联和查询。...下一、模型定义Eloquent ORM是Laravel框架中一个基于Active Record模式ORM,通过模型与数据库表进行映射,实现数据增删改查操作。...在Laravel框架中,每一个Eloquent ORM模型都对应着一个数据库表,通过继承Illuminate\Database\Eloquent\Model类来定义模型。下面是一个示例:<?...$table = 'users';}上述代码中,定义了一个User模型,并指定了该模型对应数据库表为users表。...二、增删改查操作Laravel框架中Eloquent ORM提供了一系列方便CRUD操作方法,如下:查询数据查询单个模型:$user = User::find($id);查询多个模型:$users

85451

Laravel源码分析之模型关联

上篇文章我们主要讲了Eloquent Model关于基础CRUD方法实现,Eloquent Model中除了基础CRUD外还有一个很重要部分叫模型关联,它通过面向对象方式优雅地把数据表之间关联关系抽象到了...按照Laravel设定好模式来写关联模型每个人都能写出高效和优雅代码 (这点我认为适用于所有的Laravel特性)。...我们通过官方文档里例子来看一下Laravel是怎么定义这两种关联。 一对多 class Post extends Model { /** * 获得此博客文章评论。...定义完父模型到子模型关联我们还需要定义子模型到父模型反向关联才算完整, 还是之前例子我们在子模型里通过 belongsTo方法定义子模型到父模型反向关联。...WHERE role_user.user_id = 1 远层一对多 Laravel还提供了远层一对多关联,提供了方便、简短方式通过中间关联来获得远层关联。

9.5K10

Laravel学习记录--Model

,对于数据库查询优化角度来说,显然不合理,有没有方法能一次就返回所有的关联查询结果呢?...显示结果 懒惰渴求式加载 有时候你需要在父模型已经被获取渴求式加载一个关联关系。...多对多关联需要有一个中间表支持,Eloquent提供了一些方法和这张表进行交互,如Stus关联了Mclass对象,在获取这些关联对象,可以通过模型pivot属性访问中间表数据 public function...Laravel中允许你自定义中间表模型,需要注意是中间表模型与普通模型不一样 普通模型继承自Illuminate\Database\Eloquent\Model,而中间表模型继承自Illuminate...这样或许也行吧,或许有更方便办法—就是马上要学习多态多对多,多态多对多也是需要中间表,与常规多对多差不多,只是中间表需要_type(模型类型字段),_id(关联模型id) 话不多说直接上案例 我们要实现功能是

13.4K20

深入理解 Laravel Eloquent(三)——模型关系(关联)

在本篇文章中,我将跟大家一起学习 Eloquent 中最复杂也是最难理解部分——模型关系。...所谓 “对象”,就是本文所说模型(Model)”;对象关系映射,即为模型关系。...假如我们有两个模型:User 和 Account,分别对应注册用户和消费者,他们是一对一关系,那么如果我们要使用 Eloquent 提供一对一关系方法,表结构应该是这样: user: id ......其他关系 Eloquent 还提供 “远层一对多关联”、“多态关联” 和 “多态多对多关联” 这另外三种用法,经过上面的学习,我们已经掌握了 Eloquent 模型关系基本概念和使用方法,剩下几种不常用方法就留到我们用到时候再自己探索吧...我们可以使用一个重要特性,关系预载入:http://laravel-china.org/docs/eloquent#eager-loading 直接上代码: $users = User::with('

2.6K30
领券