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

Laravel 模型关联基础教程详解

Laravel 中定义模型关联是每个 Laravel 开发者可能已经做过不止一次事情。但是在试图实现关联时可能会遇到各种问题。因为 Laravel 有各种各样关联,你应该选择哪一个?...当涉及到查询模型时,我们如何充分利用模型关联功能? Laravel 模型关联可能会让人糊涂。...如果你不完全理解 Laravel 关联在这一点上是如何工作,别担心,读完这篇文章后,你会更好地理解它。 我们应该使用哪个模型关联? 要回答这个问题,首先你要知道有哪些可用选项。...用户可以拥有多个账单,但账单属于一个用户。 在代码中是这样写: <?...如果您有账单,则可以获得该账单用户。 <?

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

需要掌握 Laravel Eloquent 搜索技术

使用 Like 关键字 如何实现模糊查询呢?即实现 MySQL LIKE 查询。Eloquent 提供了比 where 语句更加灵活模糊查询功能。...但是如果我们 JSON 数据存在 大小写字符 情况,又该如何处理呢?这种场景最适合使用 whereRaw 方法,先来看看示例,再来讲解它工作原理: <?...但现在让我们看看 Laravel 如何使用这个功能。 <?...但是这并不是我们需要关注,我们需将待查询字符串传给 where 语句即可。返回结果集即会包含完全匹配数据,也会包含发音近似的数据。 总结 Laravel 为我们提供了简单实用查询功能。...我们可以在 Laravel使用 where 语句,可以使用原生 SQL 语句,甚至可以使用模糊查询和相似查询,所有这些查询功能都是 Laravel 内置提供开箱即用,非常赞!

3.5K10

orm 系列 之 Eloquent演化历程2

本文是orm系列第三篇,也是Eloquent演化第二篇,Eloquent系列会尝试着讲清楚Eloquent如何一步一步演化到目前功能强大版本,但是毕竟个人能力有限,不可能分析非常完善,总会有不懂地方...本文最后讲下Eloquent中新增对象之间关系:多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型在单个关联下属于多个不同模型...此处为什么会出现Manager,当项目变复杂后,我们很难简单Eloquent内部组件进行有效功能了,这个时候需要一个项目的门面,帮助我们和外界沟通,让外界尽可能简单使用Eloquent,于是就出现了...Manager,记得网上搜索过关键字Using Eloquent outside Laravel,我们可以看到一篇Vivek Kumar Bansal写文章,文章从2方面介绍了怎么使用Eloquent...,bootEloquent 下面具体看下每个步骤做事情。

2.4K30

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

ORM 两种最常见实现方式是 Active Record 和 Data Mapper,Active Record 尤其流行,在很多框架中都能看到它身影,比如 Laravel 框架使用 Eloquent...这里,我们选择使用更加简单 Active Record 模式来实现 ORM 模型类,并且为了简化流程,我们直接基于 Laravel 框架 Eloquent ORM 组件来编写,就不再重复造轮子了。...下载 Eloquent ORM 相关扩展包 Eloquent ORM 作为 Laravel 框架自带 ORM 实现,还可以在 Laravel 框架之外作为独立 ORM 组件使用。...进入 vendor/illuminate/database,可以通过阅读 README.md 文件查看如何使用独立 Eloquent ORM 组件,接下来,我们将参照这个文档介绍来编写博客项目的模型类实现...模型类全局可用(为了编写 Eloquent 模型类,如果只是使用 Laravel 提供数据库查询构建器功能,则不需要这些操作)。

1.9K10

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

其实,Laravel Eloquent ORM 也是 Active Record 实现,这也是现在 ORM 主流。...对于 Laravel 中标准 Eloquent 模型类来说,每个表都应该有两个字段,一个是 updated_at ,另一个是 created_at ,分别是两个时间戳字段,用于记录数据创建时间和修改时间...然后,在这个抽象类中,使用了一个 laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php 特性,...等等,不对呀,我们在模型里面定义是一个 gender() 方法,怎么在外面使用是一个属性?别急,我们再来看看源码,看看框架中是如何把调用属性变成调用一个方法。...在这段代码中,就是先调用 BelongsTo 对象 getResults() 方法,获得关联真正 DbSex 这个 Model 对象,然后通过回调函数中 setRelation() 绑定到 laravel

8.8K20

需要掌握 Laravel Eloquent 搜索技术

使用 Like 关键字 如何实现模糊查询呢?即实现 MySQL LIKE 查询。Eloquent 提供了比 where 语句更加灵活模糊查询功能。...但是如果我们 JSON 数据存在 大小写字符 情况,又该如何处理呢?这种场景最适合使用 whereRaw 方法,先来看看示例,再来讲解它工作原理: <?...但现在让我们看看 Laravel 如何使用这个功能。 <?...但是这并不是我们需要关注,我们需将待查询字符串传给 where 语句即可。返回结果集即会包含完全匹配数据,也会包含发音近似的数据。 总结 Laravel 为我们提供了简单实用查询功能。...我们可以在 Laravel使用 where 语句,可以使用原生 SQL 语句,甚至可以使用模糊查询和相似查询,所有这些查询功能都是 Laravel 内置提供开箱即用,非常赞!

4.2K20

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

如果你熟悉使用API进行输出,构架前后端分离网络应用,那么你应该会发现,当我们使用Eloquent从数据库中取出数据后,如果想以JSON格式进行输出,那么我们可以使用- toJson()这个方法,这个方法可以直接将我们...这个时候,我们会想,如何将model中某些字段隐藏起来,不输出到JSON中。另外一种情况,比如字段是password等一些敏感信息时候,我们不希望JSON数据里包含这样敏感信息。...要解决这个问题,我们可以在model里定义hidden或者visible这两个数组来进行字段隐藏或者显示: <?...唯一需要注意是,这里由于我们拉取了多个Customer,所以我们用了每个Resource类都自带有的collection方法,将一个Collection中所有对象都进行处理。...本文主要讲解了Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解,更多关于Laravel框架使用技巧请查看下面的相关链接

4.3K30

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

假如我们有两个模型:User 和 Account,分别对应注册用户和消费者,他们是一对一关系,那么如果我们要使用 Eloquent 提供一对一关系方法,表结构应该是这样: user: id ......() { return $this->hasOne('Account', 'user_id', 'id'); } } 然后,当我们需要用到这种关系时候,该如何使用呢?...---- 这段代码除了展示了一对一关系该如何使用之外,还传达了三点信息,也是我对于大家使用 Eloquent 时候建议: 1....) { return $this->hasMany('Pay', 'user_id', 'id'); } } 然后,当我们需要用到这种关系时候,该如何使用呢?...我们可以使用一个重要特性,关系预载入:http://laravel-china.org/docs/eloquent#eager-loading 直接上代码: $users = User::with('

2.6K30

Laravel学习笔记(四)——模型,更安全数据存取

这种方式听起来貌似不错,但是当程序复杂起来后,每个地方都要进行同样数据库连接,关闭等操作,这必然就不符合代码复用原则,并且难以维护(数据库信息更改后,需要改很多地方)。...看了接下来Laravel模型使用之后你就会爱上LaravelEloquent ORM模型,这也是我直接介绍模型而不讲解其他数据库操作原因。...Laravel 数据库配置 要想使用模型,第一个要设置的当然是数据库信息。...Eloquent ORM Laravel Eloquent ORM 提供了漂亮、简洁 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应「模型」用来与该表交互。...false;//默认情况下,Eloquent 会默认数据表中存在 created_at 和 updated_at 这两个字段。

1.7K00

Laravel学习笔记(四)——模型,更安全数据存取

这种方式听起来貌似不错,但是当程序复杂起来后,每个地方都要进行同样数据库连接,关闭等操作,这必然就不符合代码复用原则,并且难以维护(数据库信息更改后,需要改很多地方)。...看了接下来Laravel模型使用之后你就会爱上LaravelEloquent ORM模型,这也是我直接介绍模型而不讲解其他数据库操作原因。...Laravel 数据库配置 要想使用模型,第一个要设置的当然是数据库信息。...Eloquent ORM Laravel Eloquent ORM 提供了漂亮、简洁 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应「模型」用来与该表交互。...false;//默认情况下,Eloquent 会默认数据表中存在 created_at 和 updated_at 这两个字段。

2K00

orm 系列 之 Eloquent使用1

Eloquent ORM 本文会是一个Eloquent使用教程,在此之前,我们先讲述下怎么搭建环境,完整系列请查看orm 基础环境搭建 记录下怎么用docker搭建laravel环境 新建项目composer...create-project --prefer-dist laravel/laravel eloquent 添加laradock cd eloquent;git init;git submodule...于是就可以通过设置Sequel Pro进行连接了,如下图所示 下一步是phpstorm设置,可以参考文章如何使用PhpStorm實現TDD、重構與偵錯然后再是让如何在PhpStorm活用PHPDoc?...$columns和$commands,Grammar在使用拼装sql时候,取得数据就是这两个地方来。...总结 本文主要是介绍了使用docker来构建laravel开发环境,同时,我们也介绍了怎么说会用phpstorm来开发laravel,搭建好环境后,主要介绍了EloquentSchema Builder

1.7K20

Laravel 7发行说明

7 Laravel 7 通过引入 Laravel Sanctum,路由速度改进,自定义 Eloquent 强制转换(casts), Blade 组件标签,流畅字符串操作,开发人员专用 HTTP 客户端...Laravel Sanctum 为 SPA (单页应用程序),移动应用程序和基于令牌简单 API 提供了轻巧身份验证系统。 Sanctum 允许应用程序每个用户生成多个 API 令牌。...有关 Laravel Sanctum 更多信息, 请查看 Sanctum 文档。 自定义 Eloquent 类型转换 自定义 Eloquent 类型转换由 Taylor Otwell 开发贡献....自定义键名 有时你可能希望使用 id 以外字段来解析 Eloquent 模型。...Laravel 7 允许为单个应用配置多个邮件驱动。在 mail 配置文件中每个邮件驱动都拥有它们自己配置以及自己独特 「transport」,这允许你应用使用不同邮件服务来发送某些邮件。

9K20

Laravel 5 系列入门教程(一)【最适合中国人 Laravel 教程】

跟随本教程走完一遍,你将会得到一个基础包含登录简单 blog 系统,并将学会如何使用一些强大 Laravel 插件和 composer 包(Laravel 插件也是 composer 包)。...本系列教程使用 Laravel 5.0 版本,5.1 版本去掉了本系列教程主要讲解元素(Auth 系统),不建议使用 5.1 来学习。...不想配置镜像同学,可以使用 Laravel 界非常著名 安正超 搞安装神器:https://github.com/overtrue/latest-laravel 3....模型 Models 接下来我们将接触Laravel最为强大部分,Eloquent ORM,真正提高生产力地方,借用库克一句话:鹅妹子英!...现 在,Artisan 帮我们在 `learnlaravel5/app/` 下创建了两个文件 `Article.php` 和 `Page.php`,这是两个 Model 类,他们都继承了 Laravel

3.4K20

Laravel 5.0 之 Eloquent 属性转换

本文译自 Matt Stauffer 系列文章. ---- 之前完全忘了要把这个 Laravel 5 系列博客写完,不过最近看到了一篇关于属性转换简介 Laravel 5 Eloquent Attribute...属性转换是 Eloquent 模型一个功能特性,这个特性让我们可以赋予 Eloquent 模型中某个属性转换为一个特定数据类型。...提示:在以前版本中也可以这样做,但是必须为每个属性定义一个自动赋值方法。而在新版本中可以通过单一数组配置让模型自动完成这些工作。...这意味着假如你数据是以特定格式存储在数据库中,而你在使用时需要是另外一种格式,现在你可以配置 Eloquent 模型自动完成两种格式之间转换工作。 为什么要这样做?...它是如何实现? 要应用属性转换这个功能,你需要在你模型中添加一个 protected $casts 数组变量。

2.1K80

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

模型Eloquent ORM使用(二) 对于模型探索我们还将继续。上篇文章中,只是简单地通过模型操作了一下数据库,并且学习了一下关联操作知识。...比如说我们可以使用类似于 array_map() 函数把集合中对象全部转换成数组,还可以用一个类似于 array_column() 函数只获取数据中两个字段组成键值对形式数据。...而另外一个 map() 函数就不用多说了,之前我们说过,Laravel PDO 在默认查询构造器情况下,走是 PDO::FETCH_OBJ ,获得集合结果中每个数据都是一个 stdClass...但是,这里划重点了,Eloquent\Builder 中有些方法是没有的,比如说 insert()、insertGetId() ,在模型中,使用 save() 就可以代替这两个方法操作。...参考文档: https://learnku.com/docs/laravel/8.x/eloquent/9406

2.8K20

Laravel5.7 Eloquent ORM快速入门详解

简介 Laravel 内置 Eloquent ORM 提供了一个美观、简单与数据库打交道 ActiveRecord 实现,每张数据表都对应一个与该表进行交互模型(Model),通过模型类,你可以对数据表进行查询...该属性决定日期被如何存储到数据库中,以及模型被序列化为数组或 JSON 时日期格式: <?...当然,这两个属性你只能同时使用其中一个而不能一起使用,因为它们是互斥。下面的例子中,除了 price 之外所有属性都是可以赋值: <?...Laravel 自带软删除功能就使用了全局作用域来从数据库中拉出所有没有被删除模型。编写自定义全局作用域可以提供一种方便、简单方式来确保给定模型每个查询都有特定条件约束。...,观察者类拥有反射你想要监听 Eloquent 事件对应方法名,每个方法接收模型作为唯一参数。

15K41

Laravel源码解析之Model

根据单一责任开发原则来讲,在laravel开发过程中每个表都应建立一个model对外服务和调用。...protected $table = 'users'; } 解析 Laravel数据操作分两种 – DB facade – Eloquent ORM 它们除了有各自特色外,基本数据操作都是通过...这个文件在你项目目录中 vendor/laravel/framework/src/Illuminate/Database/Query 下,你可以自行去查看。...Database\Query 类,开头我们讲过这个类了,这里就不多说了,随后就是各种sql拼接->执行sql->结束战斗 Eloquent ORM Eloquent ORM 与DB facade 类似...,首先每个 Eloquent ORM 都需要继承父类 Illuminate\Database\Eloquent\Model 你大概会这样写 User::find(1) 父类是不存在这个方法,它会通过

1.1K30

Laravel源码分析之模型关联

按照Laravel设定好模式来写关联模型每个人都能写出高效和优雅代码 (这点我认为适用于所有的Laravel特性)。...我们通过官方文档里例子来看一下Laravel是怎么定义这两种关联。 一对多 class Post extends Model { /** * 获得此博客文章评论。...WHERE role_user.user_id = 1 远层一对多 Laravel还提供了远层一对多关联,提供了方便、简短方式通过中间关联来获得远层关联。...动态属性加载关联模型 上面我们定义了三种使用频次比较高模型关联,下面我们再来看一下在使用它们时关联模型时如何加载出来。...还有一些我认为使用场景没那么多多态关联、嵌套预加载那些我并没有梳理,并且它们底层实现都差不多,区别就是每个关联类型有自己关联约束、匹配规则,有兴趣读者自己去看一下吧。

9.5K10
领券