1 | // 前缀 |
Laravel 模型事件 updated 触发条件
只有
$sku->{attribute} != $sku->getOriginal({attribute})
不一致的时候才会触发getDirty()
不为空的时候才触发, 而且不会比较数据类型(判断是否dirty
使用的是==
而不是===
)直接
app(Model::class)->where()->update()
不会触发$sku = app(Sku::class), $sku->has_stock = 1; $sku->save()
这样才会触发这是因为,使用
app(Model::class)->where()->update()
的时候,调用的是 Query/Builder 的 update 方法,这里面是没法触发 update 事件的。使用
$sku = app(Sku::class), $sku->has_stock = 1; $sku->save()
的时候,使用的 update 方法是 Eloquent/Model 里面的 update 方法。
https://github.com/laravel/framework/issues/11777#issuecomment-170384117
Laravel/Lumen Command 的构造函数需要注意的地方
比如 Lumen
,ConsoleServiceProvider
里面的
register
做了下面的处理:
\Laravel\Lumen\Console\ConsoleServiceProvider::register
1 | /** |
注意看上面的最后一个方法,这是所有命令 register
的时候都要做的一件事,也就是实例化, 也就是说,在我们命令行任何的
handle
方法运行之前,就需要实例化所有的
Command
了。 因为 Command
里面的
signature
、description
都是实例属性,需要实例化才能获取,要不然我们运行
php artisan
的时候就获取不到命令列表了。
因此,如果我们在 Command
的 __construct
里面做了一些影响全局的操作,有可能我们不会察觉得到,比如:
1 | \Cache::setPrefix('abc'); |
虽然你是在一个 Command
里面设置了 Cache
的
prefix
,但实际上你在其他 Command
里面的缓存前缀也会是你设置的这个。
简单地说,我们运行 php artisan
的时候,会把所有定义的
Command
实例化,如果我们需要做一些命令行初始化操作,最好放在
handle()
里面
Git 同步 fork 的项目
1 | # Add the remote, call it "upstream": |
composer require 安装本地路径包
- 在 composer.json 添加下面的配置
1 | "repositories": [ |
- 执行
require
操作
1 | composer require "vendorname/packagename @dev" |
@dev 和包名中间的空格要有