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

跟我一起学Laravel-EloquentORM进阶部分

,定义好之后,可以使用下列语法查询到关联属性了 $phone = User::find(1)->phone; Eloquent会假定关联的外键是基于模型名称的,因此Phone模型会自动使用user_id...,这种情况下应该使用一对多的关联,使用hasMany方法 的是,默认情况下之后模型的键可以通过pivot对象进行访问,如果中间表包含了额外的属性,在指定关联关系的时候,需要使用withPivot方法明确的指定列名 return $this->belongsToMany...通常情况下我们可能会使用自定义的值标识关联的表名,因此,这就需要自定义这个值了,我们需要在项目的服务提供者对象的boot方法中注册关联关系,比如AppServiceProvider的boot方法中 use...关联关系查询 在Eloquent中,所有的关系都是使用函数定义的,可以在不执行关联查询的情况下获取关联的实例。

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

    (转) Laravel Eloquent 提示和技巧

    例如,如果您想要某种类型的用户(也是通过电子邮件订购)的特定关系,您可以这样做: public function approvedUsers() { retrun $this->hasMany...image.png 更多请查看默认abstract Model class 的代码,并查看所有使用的特征。...命令行创建模型的同时,创建迁移文件和控制器 laravel创建模型的命令大家都很熟悉: php artisan make:model Company 不过你应该了解另外几个很常用的参数: php artisan...-c 表示创建模型对应的控制器 -r 表示创建的控制器属于资源控制器 -f 表示创建模型对应的工厂文件 实际上上述几个情况,也可以通过 -a 来实现 php artisan make:model...$result = $product->whereNull('category_id')->update(['category_id' => 1]); 更新是在数据库中执行的,但$ result会包含什么

    1.5K30

    Laravel源码分析之模型关联

    上篇文章我们主要讲了Eloquent Model关于基础的CRUD方法的实现,Eloquent Model中除了基础的CRUD外还有一个很重要的部分叫模型关联,它通过面向对象的方式优雅地把数据表之间的关联关系抽象到了...string $localKey * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function hasMany...\Relations\HasMany 类的实例,Eloquent封装了一组类来处理各种关联,其中 HasMany是继承自 HasOneOrMany抽象类, 这也正印证了上面说的一对一是一种特殊的一对多关联...,按照约定Eloquent 默认使用父级模型名的「snake case」形式、加上 _id 后缀名作为外键字段。...动态属性加载关联模型 上面我们定义了三种使用频次比较高的模型关联,下面我们再来看一下在使用它们时关联模型时如何加载出来的。

    9.6K10

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

    下载 Eloquent ORM 相关扩展包 Eloquent ORM 作为 Laravel 框架自带的 ORM 实现,还可以在 Laravel 框架之外作为独立的 ORM 组件使用。...在我们这里的博客应用项目中,可以通过 Composer 在根目录下运行如下命令下载对应的 Eloquent ORM 扩展包: composer require illuminate/database 为了能够正常使用...Eloquent 提供的模型事件功能,还可以下载 Laravel 提供的独立事件扩展包: composer require illuminate/events 上述扩展包下载完成后,就可以在博客项目根目录下的...进入 vendor/illuminate/database,可以通过阅读 README.md 文件查看如何使用独立的 Eloquent ORM 组件,接下来,我们将参照这个文档介绍来编写博客项目的模型类实现...ORM 编写模型类了,目前博客项目包含了两张数据表 —— posts 和 albums: ?

    2K10

    3分钟短文:说说Laravel模型中还算常用的2个“关系”

    类中我们声明了 user() 方法用于关系用户模型, 所以此处链式调用 user 属性,返回的是一个 App\User 对象实例,其包含 User 模型的所有属性, 因此 email 属性也相应返回数据库内的字段值...一对多关系 还有一个常见的关联关系是一对多。比如一个用户有多个手机号,一种状态包含很多个事件,一个商品有多个标签等等等等, 这都是一对多的常见用法。...我们使用State模型状态有多个Event事件这个场景,演示一下一对多关系的声明,以及应用。...\Database\Eloquent\Model; class State extends Model {} 我们还是先去生成数据库表的迁移文件,手动实现迁移字段: public function up...写在最后 本文不失简单地介绍了belongsTo和hasMany两个关联关系,这在代码中仅次于hasOne关系, 使用的频次比较高的。而效率也就是根据外键多查询一次SQL的消耗而已。

    2.1K31

    Laravel 9个不经常用的小技巧

    关联时使用withDefault() 在调用关联时,如果另一个模型不存在,系统会抛出一个致命错误,例如 $comment->post->title,那么我们就需要使用withDefault() ......两层循环中使用$loop 在blade的foreach中,如果你想获取外层循环的变量 @foreach ($users as $user) @foreach ($user->posts as $post...浏览邮件而不发送 如果你使用的是mailables来发送邮件,你可以只展示而不发送邮件 Route::get('/mailable', function () { $invoice = App\...通过关联查询记录 在hasMany关联关系中,你可以查询出关联记录必须大于5的记录 $posts = Post::has('comment', '>', 5)->get(); 8....软删除 查看包含软删除的记录 $posts = Post::withTrashed()->get(); 查看仅被软删除的记录 $posts = Post::onlyTrashed()->get(); 恢复软删除的模型

    75320

    【译】20个 Laravel Eloquent 小技巧(上)

    腾讯实习的项目按照公司的主流技术选型是PHP 流派的,而我习惯了 JAVA 的体系面对这个最好的语言还是挺不适应的。...带条件以及排序的关联关系模型 通常定义关系模型的方法是这样的 public function users() { return $this->hasMany('App\User'); }...比如说你需要定义一个特定类型的用户的关联关系并且用邮箱信息来排序,那你可以这么做: public function approvedUsers() { return $this->hasMany...使用关系模型字段排序 一个更复杂的“技巧”。 如果你有帖子,但要通过最新帖子对它们进行排序? 顶部有最新更新主题的论坛中非常常见的要求,对吧?...BelongsTo 关联的默认模型对象 假设有个 Post(帖子) 对象属于 Author (作者)对象,在 Blade 模板中有下面的代码 {{ $post->author->name }} 但是如果作者被删除

    2.2K50

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

    遵循这种默认的约定,可以帮我们少写很多代码,减少很多额外的配置,所以如果不是迫不得已(比如从其他系统迁移过来),建议你在使用 Eloquent 的话,尽量遵循这些默认约定。...要定义用户文章之间的一对多关联,可以在 User 模型类中通过 Eloquent 底层提供的 hasMany 方法来实现: public function posts() { return $this...= User::findOrFail(1); $posts = $user->posts; 与 hasOne 返回的是单个模型实例不一样,hasMany 返回的是模型类集合: Eloquent 底层约定...和 hasOne 方法一样,hasMany 方法底层也对如何建立关联关系做了约定,而且 hasMany 方法和 hasOne 方法的签名一样: public function hasMany($related...首先创建 Tags 模型类及其对应数据表 tags 迁移文件: php artisan make:model Tag -m 编写 create_tags_table 迁移文件对应类的 up 方法如下:

    10K40

    SVN的使用(一)---删除SVN项目

    在使用SVN前,如果本机上面已经存在SVN版本,就必须先把原来的.svn删除。...在使用SVN后,我们也常由于要部署生产环境、项目过大等原因(svn版本控制文件估计占了项目一半大),也需要删除.svn文件。...我在网上看了下,常用的比较好的方法有以下两种,都比较简单: 一、在Dos窗口中运行如下命令         for /r 项目的路径> %i in (.svn) do rd /s /q %i ...二、将“Delete SVN Folders”操作添加到右击菜单中 建立一个文本文件,名称随意,后缀为.reg,内容如下: Windows Registry Editor Version 5.00...成功后,在每一个文件夹上点击右键都会有一个“Delete SVN Folders”的选项,点击这个选项,即可删除这个文件夹下面所有的.svn文件夹。

    2.9K10

    Windows 技术篇 - 无需确认快速删除包含大量文件的目录,cmd删除文件的rmdir、del、erase和rd四种命令使用方法

    一些非固态硬盘的机器,传统的删除大量的文件会非常耗时。 使用 rmdir /S /Q D:\delete 命令可以无需确认更快速的进行删除操作,其中 D:\delete 表示要删除的文件夹。...通配符可用来删除多个文件。 如果指定了一个目录,该目录中的所 有文件都会被删除。.../P 删除每一个文件之前提示确认。 /F 强制删除只读文件。 /S 删除所有子目录中的指定的文件。...删除全局通配符时,不要求确认 /A 根据属性选择要删除的文件 属性 R 只读文件 S 系统文件...- 表示“否”的前缀 如果命令扩展被启用,DEL 和 ERASE 更改如下: /S 开关的显示句法会颠倒,即只显示已经 删除的文件,而不显示找不到的文件。

    6.8K41

    使用lsof命令恢复已删除文件(正在使用的文件)

    此方法适用于正在使用的文件 ,且被删除后,可以通过lsof的方式进行恢复。...演示: [root@master ~]# less /var/log/messages 开启另一个终端进行删除操作 [root@master ~]# rm -rf /var/log/messages...[root@master ~]# cat /var/log/messages cat: /var/log/messages: 没有那个文件或目录 这个时候不要慌,第一个终端less还是可以正常浏览文件的...less正在占用这个文件但是已经被删除了 记住这两个数字:第一个红框代表的是PID 第二个红框记住这个数字就行了 不需要字母 [root@master ~]# cat /proc/10295/...fd/4 你会神奇的发现着就是你刚刚删除的文件 直接复制一份还原回去 [root@master ~]# cp /proc/10295/fd/4 /var/log/messages [root@master

    1.8K20

    如何使用DiskGenius恢复删除的文件?

    在日常生活和工作中,我们经常会遇到误删重要文件的情况。无论是因为误删除、恶意软件、剪切、清空回收站还是其他原因,文件的意外删除都会给我们带来不小的困扰甚至是重大是损失。...好消息是,很多误删除的情况,我们可以使用数据恢复工具将删除的文件找回来。本文将详细介绍如何使用恢复软件来找回删除的文件。为什么删除的文件还可以恢复呢?...当我们删除文件的时候,系统会将这个文件的记录从文件系统里删除,同时把存储该文件的硬盘空间标记为“可用”。这样一来,被删除的文件就看不到了,并且硬盘的空闲空间被释放(可以用于存入其他数据)。...至此,被删除的文件是有可能恢复的,我们只需要使用数据恢复工具扫描一下,就能够找到丢失的文件。不过,如果文件被删除后,又向硬盘存入了文件,那有可能会将丢失的文件覆盖掉,导致文件无法恢复。...在复制文件期间,不要关闭软件,耐心等待复制结束。总之,恢复删除的文件的操作比较简单,使用数据恢复工具自己在家就可以解决问题,省事省力,并且能够更好地保护个人隐私。

    48860

    基于 Redis 消息队列实现文件上传的异步存储

    异步处理的实现原理 文件上传和存储是一个耗时操作,因为既涉及到网络传输,又涉及到磁盘 IO,如果表单中包含文件上传控件,在网络带宽不高、或者网络不佳、上传文件很大等因素的响应下,通常需要等待数秒、甚至数十秒才能完成文件上传和服务端存储...\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; class Image extends Model {...优化任务类载荷数据大小 现在我们已经实现了图片存储的异步处理,如果你使用了第三方云存储服务,涉及到与外部网络请求,或者还要对图片进行裁剪或者加水印等更多耗时操作,使用这种异步处理的优势将更加显著。...,提升 CPU 的使用效率,关于这一部分的详细实现,我们留到后面专门开辟的消息队列系列教程中给大家演示。...一种优化思路是将上传的文件临时存储到某个路径,然后将临时文件路径作为载荷数据替代之前的 base64 编码,在处理任务时再从这个临时路径加载文件,待文件处理完成后,删除这个临时文件。

    3.6K20
    领券