,所以讲的错误的地方,恳请大牛们能不吝赐教;或者如果有什么地方是没看懂的,也请提出来,因为可能那地方就是我自己没看懂,所以没讲明白,你提出后我们就可以一起讨论,让我们能共同的进步的。...php namespace App; use Illuminate\Database\Eloquent\Model; class Comment extends Model { /**...*版本的时候,laravel/framework还采用的psr-0规范,所有其目录层级还是src/Illuminate/Database,在这个版本中有个新的目录Capsule,其下面是一个Manager...接着我们看第二个Making a Model,使用上非常简单: //User Model use Illuminate\Database\Eloquent\Model as Eloquent class...参考 [ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系
实际上,上一篇聊到了\Illuminate\Database\Query\Builder这个非常重要的类,这个类含有三个主要的武器:MySqlConnection, MySqlGrammar, MySqlProcessor...开发环境:Laravel5.3 + PHP7 Builder::toSql() 看下toSql()的源码: public function toSql() { // $this...$this->compileUnions($query); } return $sql; } 这里首先会调用Illuminate\Database\Query\...MySqlConnection::select() 上文聊到Builder::runSelect()调用了三个方法:MySqlConnection::select(), Builder::toSql()...OK, illuminate/database package不仅提供了Query Builder,还提供了Eloquent ORM。
\Database\Eloquent\Collection|static[] */ public function all($columns = array('*')); /** *...\Database\Eloquent\Collection|static[] */ public function find($id, $columns = array('*'));.../** * @param $field * @param $value * @param array $columns * @return \Illuminate\Database\Eloquent\Collection...\Database\Eloquent\Collection|static[] */ public function find($id, $columns = array('*')) {...\Database\Eloquent\Collection|static[] */ public function findBy($field, $value, $columns = array
\Database\Eloquent\Collection|\App\Shop[] $shops * @method static \Illuminate\Database\Query\Builder...\Database\Eloquent\Collection|\App\Shop[] $shop * @method static \Illuminate\Database\Query\Builder|...\Database\Eloquent\Collection|\App\Merchant[] $merchant * @property-read \Illuminate\Database\Eloquent...\Collection|\App\Product[] $products * @method static \Illuminate\Database\Query\Builder|\App\Shop whereId...\Eloquent */ class Shop extends Model { /** * @return \Illuminate\Database\Eloquent\Relations
类似于这样 namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model {...Illuminate\Database\Query\Builder 调用方法去完成整个SQL。...这个文件在你项目目录中的 vendor/laravel/framework/src/Illuminate/Database/Query 下,你可以自行去查看。...$parameters); } 转发,调用的是 Illuminate\Database\Connection ,用户处理 table()方法,随后会通过 table() 方法指向 Illuminate\...,首先每个 Eloquent ORM 都需要继承父类 Illuminate\Database\Eloquent\Model 你大概会这样写 User::find(1) 父类是不存在这个方法的,它会通过
mysqlnd.net_read_timeout = 3 当数据库连接超时之后, 抛出异常 新建一个基础模型BaseModel, 其它所有模型继承这个模型, 并重写newEloquentBuilder方法...php namespace App\Models; use Illuminate\Database\Eloquent\Model; class BaseModel extends Model {...php namespace App\Models\Database; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database...\Eloquent\Collection; use Illuminate\Support\Facades\Log; use Illuminate\Support\Str; class MysqlCustomBuilder...重连的错误码 $message = $e->getMessage(); if (Str::contains($message, [
php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { /**...php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { /**...\Database\Eloquent\Collection对象,该对象提供了多种对结果集操作的方法 public function find($key, $default = null); public...要启用软删除,可以在模型中引用Illuminate\Database\Eloquent\SoftDeletes这个Trait,并且在dates属性中增加deleted_at字段。 <?...php namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes
软删除功能实际上就是利用了全局作用域功能 实现一个全局作用域功能只需要定义一个实现Illuminate\Database\Eloquent\Scope接口的类,该接口只有一个方法apply,在该方法中增加查询需要的约束...php namespace App\Scopes; use Illuminate\Database\Eloquent\Scope; use Illuminate\Database\Eloquent\...* * @param \Illuminate\Database\Eloquent\Builder $builder * @param \Illuminate\Database...return $user->makeVisible('attribute')->toArray(); 为json追加值 有时需要在json中追加一些数据库中不存在的字段,使用下列方法,现在模型中增加一个...Mutators 在Eloquent模型中,Accessor和Mutator可以用来对模型的属性进行处理,比如我们希望存储到表中的密码字段要经过加密才行,我们可以使用Laravel的加密工具自动的对它进行加密
找到 laravel/framework/src/Illuminate/Database/Connection.php 中的 select() 方法,可以看到它还有第三个参数。...: $this->getPdo(); } // $this->readPdo laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php...在执行 update() 操作时,我们最后进入了 laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php 这个对象中。.../framework/src/Illuminate/Database/Connection.php 中的 insert() 方法来执行。...在 Builder 中,get() 方法会调用一个 runSelect() 方法,这个方法里面会再调用一个 toSql() 方法,就是获得原始查询语句的方法。
组件,Tailwind 分页视图, 时间测试助手,artisan serve 的改进,事件监听器的改进,以及各种其他错误修复和可用性改进,对 Laravel 7.x 继续进行了改善。...如果该目录不存在,则框架将假定你的模型应放置在 app 目录。 模型工厂类 模型工厂类由泰勒・奥特威尔(Taylor Otwell)贡献。...Eloquent 模型工厂 已完全重写为基于类的工厂,并有完美的关联支持。例如 Laravel 中的 UserFactory 是这样写的: <?...php namespace Database\Factories; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory.../** * 表示这个用户处于禁止状态 * * @return \Illuminate\Database\Eloquent\Factories\Factory */ public function
本文会按照下面的顺序介绍: Model的创建 CRUD操作 查询和聚合操作 Hydrate 组合查询 Model创建 在laravel中,创建一个model非常简单,我们可以通过下面的命令创建 php...$book->id; } ); 我们通过save就可以完成insert操作,此处有几个tricky方法,首先是我们的Model中不存在title这些字段,那是怎么设置的呢?...,返回一些数据: >>> App\Book::all() => Illuminate\Database\Eloquent\Collection {#711 all: [ App\...,我们不做过多的介绍,我们此处来看下,all方法的执行,all在Model中是不存在的,那怎么调用的呢?...查询和聚合 Eloquent提供了丰富的查询方式,通过前面的__call方法分析,我们知道,这些最终调用的都是Eloquent/Builder方法,where方法也不例外,where其最简单的形式如下:
\Database\Eloquent\Collection Object // ( // [items:protected] => Array // ( //.../framework/src/Illuminate/Database/Eloquent/Collection.php 对象,然后这个对象里面有个 items 属性,是一个数组。...laravel/framework/src/Illuminate/Collections/Collection.php 是集合类,里面的方法大部分都调用的是 laravel/framework/src/...在所有模型都要继承的 laravel/framework/src/Illuminate/Database/Eloquent/Model.php 类中,我们很快就能发现一个 query() 静态方法。...而不是我们之前 查询构造器 中的 laravel/framework/src/Illuminate/Database/Query/Builder.php 对象。
\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class MTest extends...赶紧查看错误信息,竟然是这个 laravel.m_tests 表不存在。小伙伴们不要惊讶,在这里出错是正常的,为什么呢?...最后整理下上面的调用链条,首先,我们生成定义的 MTest 是继承自 laravel/framework/src/Illuminate/Database/Eloquent/Model.php 这个抽象类的...然后,在这个抽象类中,使用了一个 laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php 特性,...然后就是调用 newBelongsTo() 方法生成一个 laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php
而集合 Illuminate\Database\Eloquent\Collection 则是通过 eloquent 方法返回数据时创建的,这很有区别。...因为 Illuminate\Database\Eloquent\Collection 是从 Illuminate\Support\Collection 继承过来的,理所当然,拥有基类所没有的许多特性,比如...还有一些是没重写了的方法,比如 contains ,unique 。 这些细微的差别,在编程时需要避免,防止出现 method 不存在的故障。比如下图: ?...因为类 Illuminate\Support\Collection 并没有 find 方法,必然导致错误。find 是在模型中才能调用的集合的方法。...由于 Illuminate\Database\Eloquent\Collection 和 Illuminate\Support\Collection 之间的关系,我们可以在函数返回值上显式声明返回类型。
引言 前两期为了说明laravel框架提供的数据库操作能力,直接使用DB门面操作, 而没有引入更为强大的eloquent orm功能。...创建一个模型类非常简单,只用继承系统的模型就可以了: use Illuminate\Database\Eloquent\Model; class Contact extends Model {} 因为遵循的是约定大于配置的惯例...如果返回的模型想要手动定制一下,那么在查询结果集中,使用Collection提供的格式化功能就好了。...Eloquent Collection,包含了Model模型的集合。...\Database\Eloquent\Model; class Contact extends Model { // } 如果数据库表还没有创建,你想要把迁移文件的骨架代码也生成出来,只需在生成指令上追加参数如下
引言 laravel在功能拆分上相当灵活,其中查询返回的数据集,虽然继承了基类集合, 但是有一些特定的方法和用法。很多小白在写的时候,往往分不清到底是用的哪个类的哪个方法,导致凭空报错。...代码时间 laravel系统的基类就是 Illuminate\Support\Collection,同时提供了一个快捷助手函数collect 用于实例化一个集合类。...虽然eloquent collection继承了基类Collection的特性,但是对于模型类的特性 有许多独特的方法。比如 modelKeys() 返回所有集合模型的primary key。...use Illuminate\Database\Eloquent\Collection;class OrderCollection extends Collection{ public function...写在最后 本文展示了eloquent collection对象的相关操作和方法,大家注意区别于常规的集合类。 Happy coding :-)
up前面玩了 DB 查询,但是laravel开发基本不怎么使用db方式查询,应该有更强大的 模型 Model 介绍 Laravel 的 Eloquent ORM 提供了一个漂亮、简洁的 ActiveRecord...laravel 的 Model 使用先进的 Eloquent ORM 但也有优缺点 优点是数据库的操作变的简单安全 缺点也明显数据库的操作变的缓慢笨重 Eloquent ORM 作为 laravel 中亮点...php namespace App\Models; use Illuminate\Database\Eloquent\Model; class BaseModel extends...php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Test extends BaseModel {...php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Test extends BaseModel {
尤其强调了利用 Resource::collection 方法简化数据提供过程,以及对比 Fractal 和 Laravel 的资源处理方式。...php artisan make:model Post -mf: 创建一个名为 "Post" 的 Eloquent 模型,并生成相应的迁移文件和工厂。...phpnamespace App;use Illuminate\Database\Eloquent\Model;class Post extends Model{protected $guarded =...($user->paginate());}静态collection方法将采用要转换的记录集合,并确保为每个记录实例化一个新的UsersResource。...总体而言,本文聚焦于利用 Laravel 中的 Resource::collection,并强调控制器对于处理数据关系包含的重要性。
重点先学会应用增删改查 1.环境配置 前提:lavarel框架要对应php的版本,否则就有可能报错误~ 名称 版本号 Laravel 7.30.6 PHP 7.4.13 Composer 2.5.8..."; }); 浏览器访问:http://127.0.0.1:8000/home/index 4.一些错误处理 lavarel框架要对应php的版本,否则就有一系列的错误~ composer无法安装依赖包...php namespace App\Models; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent...' => env('DB_DATABASE', 'laravel-test'), //数据库名 'username' => env('DB_USERNAME', 'root'), //用户名...更高级的用法,更多内容建议看官方文档:https://learnku.com/docs/laravel/7.x/eloquent/7499 总结 laravel框架采取链式查询sql。