首页
学习
活动
专区
圈层
工具
发布

Laravel Eloquent 模型关联关系(下)

在前面两篇教程中,学院君陆续给大家介绍了 Eloquent 模型类支持的七种关联关系,通过底层提供的关联方法,我们可以快速实现模型间的关联,并且进行关联查询。...Eloquent 允许我们为这种空对象定义一个默认的类型,这个对象的类型可以在定义关联关系的时候指定: public function author() { return $this->belongsTo...Eloquent 提供了这种同步机制帮助我们更新子模型时触发父模型的更新时间 updated_at 字段值更新,要让该机制生效,需要在子模型中配置 $touches 属性: // 要触发更新的父级关联关系...学院致力于提供优质Laravel中文学习资源'; $comment->save(); 再次查看评论模型及对应文章模型数据,可以看到文章模型的更新事件和评论模型的更新时间已经一致了: 结语 好了,关于关联关系我们就介绍到这里...,我们分了三篇的篇幅来介绍 Eloquent 模型的管理关系,回顾一下,主要包含以下内容: 七种关联关系的定义:一对一、一对多、多对多、远层一对多、一对一的多态关联、一对多的多态关联、多对多的多态关联;

21.8K30

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

到目前为止,我们介绍的所有 Eloquent 模型操作都是针对单表的,接下来我们将花三篇左右的篇幅来给大家介绍如何在 Eloquent 模型类中建立模型之间的各种关联关系,以及如何实现关联查询和更新。...你可能注意到了我们在定义关联关系时,仅仅指定了模型类名,并没有指定通过哪些数据表字段建立关联,这并不是说 Laravel 神通广大,能知过去未来之事,而是因为 Eloquent 对此做了默认的约定。...为什么我们不需要指定 Laravel 就能完成这种关联呢,这是因为如果没有指定 $foreignKey,Eloquent 底层会通过如下方法去拼接: public function getForeignKey...建立相对的关联关系 通常我们都是通过 User 模型获取 UserProfile 模型,但是有时候我们可能需要反过来通过 UserProfile 反查所属的 User 模型,Eloquent 底层也为我们提供了相应的...如果是单条记录获取关联关系,就需要两次查询;如果是多条记录获取关联关系,比如文章列表页获取作者信息,因为每篇文章的作者通过动态属性获取都有一次查询,所以对N条记录来说,需要「N+1」次查询才能返回需要的结果

10.8K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    laravel 模型Eloquent ORM 查询

    up前面玩了 DB 查询,但是laravel开发基本不怎么使用db方式查询,应该有更强大的 模型 Model 介绍 Laravel 的 Eloquent ORM 提供了一个漂亮、简洁的 ActiveRecord...laravel 的 Model 使用先进的 Eloquent ORM 但也有优缺点 优点是数据库的操作变的简单安全 缺点也明显数据库的操作变的缓慢笨重 Eloquent ORM 作为 laravel 中亮点...但是却报错了我们看到model生成的sql 莫名其妙拼接了一个 s 这里我百度了一下 artisan 生成的model 若没有特别指定,laravel系统会默认自动对应名称为「Eloquent类名称的小写复数形态...Model { //根据model class获取表名 表名中包含_,用驼峰自动转换 public function getTable() { return.../* * 获取 test 表指定数据 */ function getList(){ $data = $this->select('id', 'title',

    5K10

    Laravel 5.0 之 Eloquent 属性转换

    . ---- 之前完全忘了要把这个 Laravel 5 的系列博客写完,不过最近看到了一篇关于属性转换的简介 Laravel 5 Eloquent Attribute Casting is Awesome...官方文档的 Eloquent 相关部分在这里。 什么是属性转换 转换一个属性值的意思是把它转换成某个特定的数据类型(或者是为了确保它是某个特定的数据类型)。...属性转换是 Eloquent 模型的一个功能特性,这个特性让我们可以赋予 Eloquent 模型中的某个属性转换为一个特定的数据类型。...这个数组变量 $casts 的作用就是告诉 Eloquent:“每次当我访问这个模型中的 is_admin 属性的时候,返回一个类型为 boolean 的值给我”。...写在最后 如你所见, Eloquent 属性转换功能把我们从大量不必要的重复逻辑中解放出来,并且默默地让我们更容易在数据库中存储 JSON 数据。真是好东西!

    2.4K80

    (转) Laravel Eloquent 提示和技巧

    XorY methods Eloquent有很多功能,结合了两种方法,比如“请做X,否则做Y”。...'' }} 但你可以在Eloquent关系层面上做到这一点: public function author() { return $this->belongsTo('App\Author')->...withDefault(); } 在此示例中,如果没有作者附加到帖子,则 author()关系将返回空的 App \ Author 模型。...进行排序,下面这句代码将不起作用: $clients = Client::orderBy('full_name')->get(); // doesn't work 解决办法很简单,我们只需要在获取集合之后利用...命令行创建模型的同时,创建迁移文件和控制器 laravel创建模型的命令大家都很熟悉: php artisan make:model Company 不过你应该了解另外几个很常用的参数: php artisan

    2K30

    Laravel源码解析之Eloquent Model

    这篇文章我们来学习Laravel Database地另外一个重要的部分: Eloquent Model。...Eloquent Model把数据表的属性、关联关系等抽象到了每个Model类中,所以Model类是对数据表的抽象,而Model对象则是对表中单条记录的抽象。...Eloquent Model以上文讲到的Query Builder为基础提供了Eloquent Builder与数据库进行交互,此外还提供了模型关联优雅地解决了多个数据表之间的关联关系。...Model写入 刚才说通过Eloquent Model获取模型时(在 newFromBuilder方法里)会把Model实例的 exists属性设置为true,那么对于新建的Model实例这个属性的值是...除了对数据表、基本的CRUD的抽象外,模型另外的一个重要的特点是模型关联,它帮助我们优雅的解决了数据表间的关联关系。我们在之后的文章再来详细看模型关联部分的实现。

    2.5K50

    需要掌握的 Laravel Eloquent 搜索技术

    本文同步至个人博客 需要掌握的 Laravel Eloquent 搜索技术 ,转载请注明出处。 当我们的应用程序访问较少时(例如在项目初期阶段),直接进行项目编码就可以解决大多数问题。...本文将带领大家学习 MySQL 和 Eloquent 在搜索模块中设计的相关技术。 基本的 Eloquent Where 查询 作为首个要讲解的搜索功能,我们先不涉及新知识点。...php $keyword = 'foo'; // 获取以 foo 开始,以任何字符结尾的文章 $result = Post::where('title', 'like', '{$keyword}%')-...>get(); // 获取以任何字符开始,但以 foo 结尾的文章 $result = Post::where('title', 'like', '%{$keyword}')->get(); // 获取包含...版本,可以查看 Laravel changelog 执行 sound like 操作,会进行一个发音相似性的算法,然后获取结果集。

    4.3K10

    需要掌握的 Laravel Eloquent 搜索技术

    本文将带领大家学习 MySQL 和 Eloquent 在搜索模块中设计的相关技术。 基本的 Eloquent Where 查询 作为首个要讲解的搜索功能,我们先不涉及新知识点。...php $keyword = 'foo'; // 获取以 foo 开始,以任何字符结尾的文章 $result = Post::where('title', 'like', '{$keyword}%'...)->get(); // 获取以任何字符开始,但以 foo 结尾的文章 $result = Post::where('title', 'like', '%{$keyword}')->get(); /.../ 获取包含 foo 的文章 $result = Post::where('title', 'like', '%{$keyword}%')->get(); 我们可以看到 Eloquent 的模糊查询功能十分灵活...版本,可以查看 Laravel changelog 执行 sound like 操作,会进行一个发音相似性的算法,然后获取结果集。

    5.1K20

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

    比如说我们可以使用类似于 array_map() 的函数把集合中的对象全部转换成数组,还可以用一个类似于 array_column() 的函数只获取数据中的两个字段组成键值对形式的数据。...laravel/framework/src/Illuminate/Collections/Collection.php 是集合类,里面的方法大部分都调用的是 laravel/framework/src/...这是一个连续递进的关系,之前在 查询构造器 的文章中,我们已经看到了它的底层就是调用的 原生查询 操作。那么这回,我们再来看一下 Model 中的方法,在底层是不是调用的是 查询构造器 。...在所有模型都要继承的 laravel/framework/src/Illuminate/Database/Eloquent/Model.php 类中,我们很快就能发现一个 query() 静态方法。...参考文档: https://learnku.com/docs/laravel/8.x/eloquent/9406

    3.7K20

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

    四、查询构建器Laravel框架中的Eloquent ORM提供了方便的查询构建器,用于构建复杂的查询语句。下面是一些常用的查询构建器方法。...总结通过上述文档和示例,我们可以看出Laravel框架中的Eloquent ORM提供了便捷的对象关系映射功能,可以大大简化开发者的数据库操作。...它支持多种关联关系,包括一对一、一对多和多对多等,并且提供了方便的查询构建器,用于构建复杂的查询语句。...Eloquent ORM提供了大量的方法来操作数据,包括增删改查等,具体可以参考官方文档。...关联关系的定义需要在对应的模型类中定义,例如一对一关联需要在hasOne和belongsTo方法中定义,一对多关联需要在hasMany和belongsTo方法中定义,多对多关联需要在belongsToMany

    2K41

    3分钟短文:Laravel 模型查询数据库的几个关键方法

    引言 本期继续我们的laravel学习,主要说一说laravel使用eloquent orm 模型 读取数据库条目的几个常用方法。 ?...学习时间 让我们从最简单的例子开始,就是获取数据库表内所有的条目,返回一个集合。...顺带再说一下聚合函数,使用关系型数据库很大的因素就是其拉取关系型数据很高效, 因此也内置了很多聚合函数用于数据聚合操作。...比如常用的数据统计,计数,求平均,求和等等等等,laravel调用起来的方法也极为简单, 像下面这样: $countVips = Contact::where('vip', true)->count()...写在最后 本文主要讲了数据库查询相关的内容,包括获取全量数据,获取单条数据, 分块拉取数据,以及聚合函数等,这些常规操作集合上期讲的查询约束项, 基本上可以涵盖编程中的大多数需求了。

    2.6K40
    领券