Laravel 9 之前模型属性访问器、修改器
通过 setFooBarAttribute($value)
、getFooBarAttribute()
方法来定义和访问自定义动态 fooBar
属性。
1 | namespace App\Models; |
Laravel 9 及之后版本的模型属性访问器、修改器
通过返回值类型为 Attribute
类来定义和访问自定义动态属性。
通过 setFooBarAttribute($value)
、getFooBarAttribute()
方法来定义和访问自定义动态 fooBar
属性。
1 | namespace App\Models; |
通过返回值类型为 Attribute
类来定义和访问自定义动态属性。
WSL 跨文件操作性能比较差,WSL Debian PHP 解释器执行 Windows 上的代码速度会很慢,因此 PHP 项目代码要保存在 WSL Debian 中。
点击 PHPStorm 的 文件 > 打开,选择 \wsl$\Debian 目录,找到 WSL Debian 系统上的项目文件夹,这样就可以打开 WSL Debian 上的项目文件夹了。
1 | sudo apt update |
测试用 Octane 加速 Laravel10,并发达到4倍左右,同时对比Hyperf3压力测试
Laravel
开发爽,但性能完全无法忍受。刚完成一个项目,有点时间,试试看用 octane
加持后是否能摆脱 Laravel
的性能魔咒。Laravel
应用基本可可无缝迁移到 Hyperf
,因此同时测试 Hyperf
,看看 Swoole
协程异步加持的 Hyperf
是不是比 Laravel
快很多。
1 | 服务器: 阿里轻量云服务器 |
Laravel Eloquent 日期系列化成 json,默认系列化格式为:2023-03-08T08:16:02.000000Z
。
原因是 Laravel 模型基类的 serializeDate()
时间系列化方法调用 Carbon\Traits\Converter::toJSON()
方法,返回的是 ISO-8601
格式的日期。
引起问题的代码如下:
1 | // Illuminate\Database\Eloquent\Concerns\HasAttributes |
Laravel 中使用 Intervention 缩放图片/生成缩略图
Laravel
中使用 Intervention
库缩放图片的时候,没必要用专供的接口,用通用不需要任何配置,还更简单,直接调用就可以。
Intervention
包composer require intervention/image
以前用 window 系统的时候,经常去 php 官网下载不同版本的 php
来使用,改一下系统 path 就可以更换默认 php 版本,其它版本用完整路径也可以使用。Mac 上就更省事一点,用 brew
命令就可以安装不同版本的 php,再用 brew-php-switcher
切换默认 php 版本,而且用 pecl
命令就可以安装 pecl 扩展。
php
安装包版本1 | brew search php |
执行命令后,你会看到不同版本的 php
, 最新版的是不带版本号直接是 php
,旧版本带版本号,如:php@8.1
、php@7.4
。
php
1 | brew install php #不带版本号是最新版 |
php
版本Laravel Eloquent 数据库关联模型的增删改操作
Laravel
Eloquent
ORM
提供了数据模型关联表操作的 API,熟练掌握这些API后,才体会到 Laravel
数据库操作有多高效。
1 | // 新建一条数据 Post 的评论,save 将自动添加 post_id 字段 |
和 save/saveMany
的区别是参数时数组,而不是模型。
1 | - users |
1 | // App\Models\User |
1 | // App\Models\Avatar |
1 | // 新建 |
1 | - posts |
1 | // App\Models\Post 关联 |
//TODO
1 | User::query()->whereIn( |
Composer的元数据存在国外的服务器,每次执行composer命令的时候,经常要下载很多的元数据,需要几分钟到十几分钟,效率极低。
我们可以设置使用国内composer镜像来加速。
1 | # 查看 composer 项目配置 |
设置镜像命令:
1 | # 阿里云镜像(不同步了,不推荐用) |
恢复默认源:
1 | composer config -g --unset repos.packagist |
最近安装 Laravel 10 总提示 匹配不到 doctrine/inflector
最小版本的错误:
1 | - laravel/framework[v10.0.0, ..., v10.4.1] require doctrine/inflector ^2.0.5 -> found doctrine/inflector[2.0.x-dev, 2.1.x-dev] but it does not match your minimum-stability. |
打开 packagist.org
看,明明最新包是 2.0.6,怎么会没有。
用 composer show doctrine/inflector -a
命令,看到的最新版本是 2.0.4 😭。可以实锤是镜像没同步,应用包太老了。
用命令 composer config -g --unset repos.packagist
恢复默认源,再执行 composer show doctrine/inflector -a
,果然最新包时 2.0.6。
换腾讯云镜像,问题解决。