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

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

标准的数据库结构中,我们是有主外的概念的,但是,说实话, MySQL 中使用主外的情况还真的是非常少。之前似乎有印象说 MySQL 不是很推荐通过主外来建立表之间的联系。...之所以要有这个东西,主要也是为了数据之前能够在数据库层面保持一定的关联,这样我们就可以做一些特殊的操作,比如说定义数据库的事件或者定时任务之类的,或者关联删除的时候能够更加有效率。...当然, Laravel 中,可以不在数据库层面进行严格的设置,就可以框架代码中实现主外的关联。...这个参数是可选的,如果不填,它会默认找一个叫做 sex_id 的值,当然,我们的数据中是没这个字段的,所以我们指定为 sex 。...下篇文章我们还将继续进行模型的学习以及整个模型的源码分析。 参考文档: https://learnku.com/docs/laravel/8.x/eloquent/9406

8.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel Eloquent 模型关联关系(下)

统计关联模型 我们还可以通过 Eloquent 提供的 withCount 方法不加载关联模型的情况下统计关联结果的数量。...,这样做的好处是不需要指定关联模型与父模型关联字段值,Eloquent 底层会自动判断并设置。...' => mt_rand(1, 15)], ['content' => $faker->paragraph, 'user_id' => mt_rand(1, 15)] ]); 更新一对多所属模型字段...如果是要更新新创建的模型实例所属模型(父模型)的字段,比如以 posts 表为例,新增的记录想要更新 user_id 字段,可以这么实现: $user = User::findOrFail(1);...空对象模型 如果字段 user_id 允许为空的话,当我们访问 Post 模型上的 author 属性时,默认返回为 null。

19.5K30

Laravel 模型关联基础教程详解

Laravel 中定义模型关联是每个 Laravel 开发者可能已经做过不止一次的事情。但是试图实现关联时可能会遇到各种问题。因为 Laravel 有各种各样的关联,你应该选择哪一个?...当涉及到查询模型时,我们如何充分利用模型关联的功能? Laravel模型关联可能会让人糊涂。...我们通过 hasOne 方法告诉 Laravel User 模型有一个 Passport 。 注意: 所有用于定义关联的方法都有可选的额外参数,你可以在这些参数中定义本地。...你可以通过创建迁移文件 Laravel 中创建此中间表。 远程关联 远程一对一 has one through 关联通过单个中间关联模型实现。...如果每个供应商都有一个用户,并且每个用户与一个用户历史记录相关联,那么供应商可以通过用户访问用户的历史记录。

5.5K31

Laravel学习记录--Model

(当前模型类的) 如不指定,默认拼接规则为 表名_id,这里为stu_id relatedPivotKey:另一模型中间表的字段(当前模型类的) 如不指定,默认拼接规则与foreignPivotKey...Laravel中允许你自定义中间表模型,需要注意的是中间表模型与普通模型不一样 普通模型继承自Illuminate\Database\Eloquent\Model,而中间表模型继承自Illuminate...throuth:中间模型类 firstKey:中间模型类与当前模型类的,如果不指定,本例中按照默认拼接规则为 当前模型类名_id;这里就是(Countrie_id)secondKey:中间模型类与关联模型类的关联...$foreignPivotKey:关联模型中间表的,默认拼接规则为”当前表_id“ $relatedPivotKey:中间表的关联ID字段另一; 注意这里定义反向关联,foreignPivotKey...如果字段uid允许为空,当我们访问Phone模型上的muser属性(注意这里是属性,而不是方法)时,默认返回null,Eloquent允许我们为这种空对象定义一个默认的类型,这个对象类型定义关联时指定

13.4K20

Laravel源码分析之模型关联

上篇文章我们主要讲了Eloquent Model关于基础的CRUD方法的实现,Eloquent Model中除了基础的CRUD还有一个很重要的部分叫模型关联,它通过面向对象的方式优雅地把数据表之间的关联关系抽象到了...,按照约定Eloquent 默认使用父级模型名的「snake case」形式、加上 _id 后缀名作为字段。...;//关联名称 $this->relatedPivotKey = $relatedPivotKey;//关联模型Role的主键中间表中的role_id $this-...>foreignPivotKey = $foreignPivotKey;//父模型Role的主键中间表中的user_id parent::__construct($query,...\Relations\BelongsToMany类的实例,与定义一对多关联时一样,实例化BelongsToMany时定义里与关联相关的配置:中间表名、关联的模型、父模型中间表中的键名、关联模型中间表中的键名

9.5K10

Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解

model序列化(这个方法从Laravel 5.1+开始就可以使用了): $user = App\User::find(1); return $user- toJson(); 使用多了,我们会发现,...php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { /** * 只有以下数组中出现的字段会被序列化...address | 字段类型我就不赘述了,其中country_id、province_id以及city_id这三个分别对应了国家、省份以及城市表中的id。...基于以上原因,我们需要一个中间层,我们输出model成为JSON的时候,可以进行一次信息的过滤及加工。 那么还是使用我们上面的应用场景。要输出自定义的字段再简单不过了。.../docs/5.7/eloquent-resources 本文主要讲解了Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解,更多关于Laravel框架的使用技巧请查看下面的相关链接

4.4K30

Laravel 5.0 之 Eloquent 属性转换

. ---- 之前完全忘了要把这个 Laravel 5 的系列博客写完,不过最近看到了一篇关于属性转换的简介 Laravel 5 Eloquent Attribute Casting is Awesome...官方文档的 Eloquent 相关部分在这里。 什么是属性转换 转换一个属性值的意思是把它转换成某个特定的数据类型(或者是为了确保它是某个特定的数据类型)。...属性转换是 Eloquent 模型的一个功能特性,这个特性让我们可以赋予 Eloquent 模型中的某个属性转换为一个特定的数据类型。...提示:以前版本中也可以这样做,但是必须为每个属性定义一个自动赋值的方法。而在新版本中可以通过单一的数组配置让模型自动完成这些工作。...这意味着假如你的数据是以特定的格式存储在数据库中,而你使用时需要的是另外一种格式,现在你可以配置 Eloquent 模型自动完成两种格式之间的转换工作。 为什么要这样做?

2.1K80

Laravel6.0.4中将添加计划任务事件的方法步骤

你可以 Michael Dyrynda 的文章 Pull Request #29888 中学习更多这些事件的相关内容。相信你朋友。...Laravel 5.8 的完整发行说明可在 Github v6 changelog 中找到: Laravel v6.0.4 版本 新增 添加了 TestResponse::assertJsonPath(...计划任务运行时发出信号的事件 (#29888) 允许添加带有 InputArgument InputOption 对象的命令参数和选项 (#29987) 修复 修复了 __() 和 null 参数 (#29967) 修复了自定义数据透视模型上修改...中允许 symfony 文件实例 (#30009) 使用自定义配置创建存储模拟数据 (#29999) 仅当语言环境有条件地存在时,才 pendingmail 中设置语言环境 (dd1e0a6) 改进了从根目录生成类时按字母顺序对导入进行排序...(#29951) 重构 根目录中将导入更改为 Alpha 排序 (#29954, #29958) 尽可能使用辅助函数 (#29959) 提高了 auth.throttle 翻译的可读性 (#30011

1.7K21

Laravel Eloquent 模型关联关系详解(上)

你可能注意到了我们定义关联关系时,仅仅指定了模型类名,并没有指定通过哪些数据表字段建立关联,这并不是说 Laravel 神通广大,能知过去未来之事,而是因为 Eloquent 对此做了默认的约定。...,第二个参数是关联模型类所属表的,这里对应的是 user_profiles 表的 user_id 字段,第三个参数是关联表的关联到当前模型所属表的哪个字段,这里对应的是 users 表的 id...第二个参数是当前模型类所属表的本例中是 user_profiles 表的 user_id 字段,拼接规则和 hasOne 那里类似,只不过这里是基于第四个参数关联关系名称 $relation:...+下划线格式(注意不是复数格式,所以并不是对应默认表名), 第三个参数是 $foreignPivotKey 指的是中间表中当前模型类的,默认拼接规则和前面一对一、一对多一样,所以本例中是 posts...第四个参数 relatedPivotKey 是中间表中当前关联模型类的,拼接规则和 foreignPivotKey 一样,只不过作用于关联模型类,所以本例中是 tags 表的 tag_id 字段。

9.8K40

Laravel 7发行说明

7 Laravel 7 通过引入 Laravel Sanctum,路由速度改进,自定义 Eloquent 强制转换(casts), Blade 组件标签,流畅的字符串操作,开发人员专用的 HTTP 客户端...有关 Laravel Sanctum 的更多信息, 请查看 Sanctum 文档。 自定义 Eloquent 类型转换 自定义 Eloquent 类型转换由 Taylor Otwell 开发贡献....路由模型绑定优化 路由模型绑定优化由 Taylor Otwell 开发贡献 。 自定义键名 有时你可能希望使用 id 以外的字段来解析 Eloquent 模型。...$post; }); 隐式绑定约束 有时,当在路由中隐式绑定多个 Eloquent 模型时,可能希望对第二个 Eloquent 模型进行约束,使其必须是第一个 Eloquent 模型的子类。...('api/users/{user}/posts/{post:slug}', function (User $user, Post $post) { return $post; }); 当使用自定义隐式绑定作为嵌套的路由参数时

9K20

3分钟短文 | Laravel模型关联删除表记录,用观察者还是事件钩子

引言 说一个场景需求,假如有一个user模型,用户的上传图片存在另外一张表photo内。当删除该用户时,想要同时删除关联的photo表的相关记录。应该用什么办法呢? ?...那么Laravel中是怎么写的呢,如何自动触发了 user 的删除时间,自动进行 photo 的删除操作?我们可以借助于 Eloquent ORM 提供的 deleting 事件,做删除动作。...首先, AppServiceProvider 内注册某模型的观察者: public function boot() { User::observe(UserObserver::class);...MySQL提供了约束,并且可以定义触发器用于批次动作处理。...那么使用 Laravel migrations 时,创建photo表的关联事件: $table->foreign('user_id')->references('id')->on('users')-

1.8K10

Laravel 7 新特性-路由的趟坑之路(自定义键名以及作用域)

Laravel 7 开始新增了一些新特性,今天我们来讲解下 路由绑定的新用法,自定义键名(slug)以及作用域(范围限定) 首先我们 安装最新版本的 Laravel ,并且创建两张数据表。...自定义 首先我们来说一下自定义是个什么东西,你可能知道,我们如果要查找一个数据,比如,我们要查询 Posts 文章表里的第一条数据。...当然我们以前的版本可以更改这个,我们需要在 模型中重写一个方法 getRouteKeyName 接下来我们看下 Laravel 7 以前是怎么实现的 首先。....test/posts/amet-laudantium-reprehenderit-ullam-repudiandae Laravel 7 的版本,实现以上自定义,就更加方便了 只需要在 路由上添加一个动态参数即可...转载无需与我联系,但须注明出处,注明文章来源 Laravel 7 新特性-路由的趟坑之路(自定义键名以及作用域) 联系我 hedeqiang.png

2.4K10

Php Laravel框架 多表关系处理 之 Eloquent一对多关系处理

Php Laravel框架 多表关系处理 之 Eloquent一对多关系处理 本博文主要介绍 Laravel 框架中 Eloquent 对一对多关系的处理以及 Laravel Administrator...您的数据库可能是彼此相关的。比方,一篇博客文章可能有很多评论,或者一个订单与下订单的用户相关Eloquent 使得管理和处理这些关系变得简单。...我们能够像这样定义关系模型 Model: <?...表与表之间的一对多关系已确立, 以下将介绍Laravel Administrato 后台中的实现 下拉列表查询、绑定等应用 <?...演示样例中多次使用到 “学生姓名”、“课程名”,尽管他们存储不同的表中,但因为我们之前 Model中已建立了它们之间的 一对多关系,因此我们能够自由搭配组合 效果图例如以下: 10个Laravel4

2.1K40

laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析

本文实例讲述了laravel框架数据库操作、查询构建器、Eloquent ORM操作。...Laravel内置的Eloquent ORM提供了一种便捷的方式帮助你组织数据库数据,每张数据表都对应一个与该表进行交互的模型(Model),通过Model类,你可以对数据表进行查询、插入、更新、删除等操作...如果需要自定义表名,则需要重写$table变量来指定表名。 Eloquent默认的主键为’id’,且该字段为自增int型,如果需要自定义主键,可以通过$primaryKey来指定。...可以使用查询构建器的所有方法,除了增删改查,还有where、聚合函数等。...更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及

13.3K51
领券