该问题与在 Docker 容器中运行的 Laravel 项目有关,但适用于任何类型的项目和任何类型的容器,因为 .env 文件在所有平台上都很常见。
更改文件中的变量值后.env
,在 docker 容器内运行的项目不会看到更改,并且仍使用以前的值运行。在 Laravel 中,有一些命令可以清除缓存的配置,但这似乎不会更改正在运行的容器内的值。即使使用--force-recreate
flag 运行 docker-compose 也不会更新容器 .env 值。所以基本上,以下任何一项都不起作用:
docker exec -it container_name php artisan config:clear
docker exec -it container_name php artisan cache:clear
docker-compose run --build --force-recreate
在正在运行的 Docker 容器中更新环境变量值的正确方法是什么?
我正在使用 Eloquent 的模型事件在创建/更新/删除模型后执行一些操作。我指的是这些:
class User extends Model
{
public static function boot()
{
parent::boot();
self::created(function($model){
// ... code here
});
self::updated(function($model){
// ... code here
});
self::deleted(function($model){
// ... code here
});
}
}
Run Code Online (Sandbox Code Playgroud)
问题:我需要访问其中任何一个中的 $request 对象。是否可以?我想要做的场景是在存储当前模型后将一些值插入另一个数据库表中。这些值位于 $request 中。而且我无法访问控制器来手动执行此操作。