. ---- 之前完全忘了要把这个 Laravel 5 的系列博客写完,不过最近看到了一篇关于属性转换的简介 Laravel 5 Eloquent Attribute Casting is Awesome...官方文档的 Eloquent 相关部分在这里。 什么是属性转换 转换一个属性值的意思是把它转换成某个特定的数据类型(或者是为了确保它是某个特定的数据类型)。...属性转换是 Eloquent 模型的一个功能特性,这个特性让我们可以赋予 Eloquent 模型中的某个属性转换为一个特定的数据类型。...这个数组变量 $casts 的作用就是告诉 Eloquent:“每次当我访问这个模型中的 is_admin 属性的时候,返回一个类型为 boolean 的值给我”。...写在最后 如你所见, Eloquent 属性转换功能把我们从大量不必要的重复逻辑中解放出来,并且默默地让我们更容易在数据库中存储 JSON 数据。真是好东西!
尤其强调了利用 Resource::collection 方法简化数据提供过程,以及对比 Fractal 和 Laravel 的资源处理方式。...phpnamespace App;use Illuminate\Database\Eloquent\Model;class Post extends Model{protected $guarded =...避免批量赋值是指使用 Laravel 的属性来指定哪些字段可以被批量赋值,以防止不受控制的数据注入。· 播种数据库attributeName 的方式访问模型中的属性,而不必每次都通过模型实例去获取属性。...总体而言,本文聚焦于利用 Laravel 中的 Resource::collection,并强调控制器对于处理数据关系包含的重要性。
\Eloquent\Collection|\App\Shop[] $shops * @method static \Illuminate\Database\Query\Builder|\App\Merchant...\Eloquent\Collection|\App\Shop[] $shop * @method static \Illuminate\Database\Query\Builder|\App\Product...* @property \Carbon\Carbon $updated_at * @property-read \Illuminate\Database\Eloquent\Collection|\...App\Merchant[] $merchant * @property-read \Illuminate\Database\Eloquent\Collection|\App\Product[] $products...预加载查询 (1)嵌套预加载 Eloquent在通过属性访问关联数据时是延迟加载的,就是只有该关联数据只有在通过属性访问它时才会被加载。在查找上层模型时可以通过预加载关联数据,避免N+1问题。
Laravel 官方开发组本周发布了 Laravel 6.11.0 版本,新版本在 Eloquent 模型查询时新增 firstWhere 方法,优化了基于 Redis 的多频道广播,以及一些现有版本的问题修复...1、新增功能 Eloquent firstWhere() 方法 Eloquent 模型现在支持调用 firstWhere 方法,它的功效和 where()->first() 一样,算是一个语法糖: /...所以,最新版本的 Laravel 优化了这个问题,在 RedisBroadcaster 中添加一段 Lua 脚本,允许一次广播数据到多个频道: 2、更新日志 接下来,我们来大致看一下此次版本更新的详细日志...新增特性 新增 Illuminate\Database\Eloquent\Builder::firstWhere() 方法 Redis 支持一次广播数据到多个频道 问题修复 修复 WithFaker:...:makeFaker() 中的未定义属性 修复 Str::afterLast() 方法 修复 PHP 7.3 插入浮点类型到 MySQL 数据库问题 修复通过自定义中间表属性名刷新模型问题 代码调整 在
/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 对象。...参考文档: https://learnku.com/docs/laravel/8.x/eloquent/9406
); /** * @param $id * @param array $columns * @return array|\Illuminate\Database\Eloquent\Collection...$value * @param array $columns * @return \Illuminate\Database\Eloquent\Collection|static[] */ public...\Database\Eloquent\Collection|static[] */ public function find($id, $columns = array('*')) {...; } /** * @param $id * @param array $columns * @return array|\Illuminate\Database\Eloquent\Collection...param array $columns * @return \Illuminate\Database\Eloquent\Collection|static[] */ public function
引言 前两期为了说明laravel框架提供的数据库操作能力,直接使用DB门面操作, 而没有引入更为强大的eloquent orm功能。...创建一个模型类非常简单,只用继承系统的模型就可以了: use Illuminate\Database\Eloquent\Model; class Contact extends Model {} 因为遵循的是约定大于配置的惯例...如果返回的模型想要手动定制一下,那么在查询结果集中,使用Collection提供的格式化功能就好了。...Collection,包含了Model模型的集合。...所以使用map遍历集合元素时, 每个元素其实都是一个独立的Contact对象,直接给对象追加属性就可以增加字段了。
文件 DB_CONNECTION=sqlite DB_DATABASE=/Users/zhuanxu/workspace/cleanphp-laravel/database/database.sqlite...此处DB_DATABASE换为你自己的路径,并新建database.sqlite,touch /Users/zhuanxu/workspace/cleanphp-laravel/database/database.sqlite...的Eloquent的实现,Eloquent是Active Record的ORM,具体介绍可以看eloquent。...此处我们需要几个功能 form filter,我们需要对post的表单进行验证 Hydrator,我们需要将输入的表单方便的赋值到我们的Entity的属性上 此处表单验证上,我们使用laravel的表单验证...但是在使用laravel过程中,特别是repository这块,由于没有直接使用laravel的Eloquent模块,实现上确实比较麻烦,在实现CleanPhp\Invoicer\Persistence
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 {
前言 Laravel官方已经有scout+meilisearch 的一键扩展包 见:https://packagist.org/packages/laravel/scout 但是,肯定是不支持5.8版本的...流程 先安装scout composer require laravel/scout "v7.2.1" laravel 5.8 最多支持 scout "v7.2.1" 发布: php artisan...php namespace App\Services; use App\Helper\MeiliSearch; use Illuminate\Database\Eloquent\Collection...; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Log; use Laravel\Scout\Builder...' => $model->id, 'title' => $model->title, 'author_id' => $model->author_id
php namespace App; use Illuminate\Database\Eloquent\Model; /** * App\Post * * @property integer...\Eloquent\Collection|\App\Comment[] $comments * @property-read \Illuminate\Database\Eloquent\Collection...,在控制器里输入方法时会自动补全auto complete字段属性的方法: 2、mpociot/laravel-test-factory-helper 输入指令php artisan test-factory-helper...Faker是一个好用的生成假数据的第三方库,而这个开发插件会自动帮你生成这些属性,不用自己写了。 Laravel官方推荐使用模型工厂自动生成测试数据,推荐这么写的: //先输入指令生成database/seeds/CategoryTableSeeder.php文件: php artisan make
下载 Eloquent ORM 相关扩展包 Eloquent ORM 作为 Laravel 框架自带的 ORM 实现,还可以在 Laravel 框架之外作为独立的 ORM 组件使用。...进入 vendor/illuminate/database,可以通过阅读 README.md 文件查看如何使用独立的 Eloquent ORM 组件,接下来,我们将参照这个文档介绍来编写博客项目的模型类实现...模型类全局可用(为了编写 Eloquent 模型类,如果只是使用 Laravel 提供的数据库查询构建器功能,则不需要这些操作)。...ORM 的模型类基类 Model,这样就可以使用 Eloquent 模型类支持的属性和方法。...这里,我们通过设置 $timestamps 属性为 false 表示禁用 Eloquent 模型类自动维护时间字段机制。
下一、模型定义Eloquent ORM是Laravel框架中的一个基于Active Record模式的ORM,通过模型与数据库表进行映射,实现数据的增删改查操作。...在Laravel框架中,每一个Eloquent ORM模型都对应着一个数据库表,通过继承Illuminate\Database\Eloquent\Model类来定义模型。下面是一个示例:Database\Eloquent\Model;class User extends Model{ protected...在该模型中,我们可以定义一些属性和方法,来对数据表进行操作。...二、增删改查操作Laravel框架中的Eloquent ORM提供了一系列方便的CRUD操作方法,如下:查询数据查询单个模型:$user = User::find($id);查询多个模型:$users
CastsAttributes { /** * 将取出的数据进行转换 * * @param \Illuminate\Database\Eloquent\Model...php namespace App; use App\Casts\Json; use Illuminate\Database\Eloquent\Model; class User extends...自定义键名 有时你可能希望使用 id 以外的字段来解析 Eloquent 模型。...'users.id') ])->get(); 在该查询获取到的结果集中,last_posted_at 属性将会是一个字符串。...在Laravel7中,可以在任务类上定义 maxExceptions 属性: <?
代码时间 laravel系统的基类就是 Illuminate\Support\Collection,同时提供了一个快捷助手函数collect 用于实例化一个集合类。...虽然eloquent collection继承了基类Collection的特性,但是对于模型类的特性 有许多独特的方法。比如 modelKeys() 返回所有集合模型的primary key。...比如调用 find($id) 的方法返回的是根据模型实例的primary id查找到的模型对象。 这与原始的集合的方法都有着本质的不同。...我们手动创建一个eloquent collection 用于操作query builder返回的数据集合。...use Illuminate\Database\Eloquent\Collection;class OrderCollection extends Collection{ public function
最后整理下上面的调用链条,首先,我们生成定义的 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...它判断的是这个 key 是否是抽象基类 laravel/framework/src/Illuminate/Database/Eloquent/Model.php ,而不是我们定义的 MTest ,用的是一个.../framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php 这个 Trait 的 $relations 属性中,方便后续的使用
中使用MongoDB 使用Composer创建一个Laravel项目 composer create-project --prefer-dist laravel/laravel laravel-mongodb-exploer.../database.php ......'), 'options' => [ 'database' => 'admin' // sets the authentication database required by mongo 3 ]...DB中查询MongoDB 使用了Laravel-MongoDB扩展,可以基于Eloquent与Query Builder操作MySQL一样的数据php artisan thinker/ / 查询ad_clicks...')->where('_id', '5cf71b34e14620598643d23b')->update(['ad_index'=>2]); 在Laravel ORM中查询MongoDB 在项目中,创建一个
模型类目录 由于压倒性的社区需求,现在默认的 Laravel 框架包含一个 app/Models 目录。我们希望你喜欢 Eloquent 的新家!...Eloquent 模型工厂 已完全重写为基于类的工厂,并有完美的关联支持。例如 Laravel 中的 UserFactory 是这样写的: <?...php namespace Database\Factories; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory...例如,你的 User 模型 有个 suspended 属性,现在你想修改它的一个默认的属性值,你可以使用基类工厂类的 state 方法来完成。方法名字可以随意设置,毕竟这是个很典型的 PHP 方法。.../** * 表示这个用户处于禁止状态 * * @return \Illuminate\Database\Eloquent\Factories\Factory */ public function
数据库建立及迁移 Laravel 5 把数据库配置的地方改到了 `learnlaravel5/.env`,打开这个文件,编辑下面四项,修改为正确的信息: DB_HOST=localhost DB_DATABASE...模型 Models 接下来我们将接触Laravel最为强大的部分,Eloquent ORM,真正提高生产力的地方,借用库克的一句话:鹅妹子英!...Eloquent 提供的 Model 类 `Illuminate\Database\Eloquent\Model`,且都在 `\App` 命名空间下。...如果你想深入地了解 Eloquent,可以阅读系列文章:深入理解 Laravel Eloquent(一)——基本概念及用法 ---- 接下来进行 Article 和 Page 类对应的 articles...表和 pages表的数据库迁移,进入 `learnlaravel5/database/migrations` 文件夹。
领取专属 10元无门槛券
手把手带您无忧上云