我想在保存或更新模型时验证它是否有效。因此,我创建了一个名为eloquentvalidation的类,我从它扩展了所有模型的类。下面是我在eloquentvalidation中的启动函数:
public static function boot()
{
parent::boot();
static::creating(function($item)
{
if(!$item->isValid()) return false;
});
static::updating(function($item)
{
if(!$item->isValid()) return false;
});
}
我的问题是boot永远不会被调用。我在里面放了一个断点,它从来没有触发过。所以我的模型在保存之前没有验证。
我有另一个项目使用相同的逻辑,它正在工作。我能看到的唯一区别是,我在另一个项目中有命名空间,而在这个项目中没有。因此,失败类被定义为
use IlluminateDatabaseEloquentModel;
class EloquentValidating extends Model {
,而工作的定义为:
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class EloquentValidating extends Model {
名称空间会导致这种问题吗?为什么??如果我必须引入名称空间,我会这样做,但我想了解为什么它是原因。
谢谢Benoit
看起来您需要更新已编译的类。运行
php artisan clear-compiled
然后……
php artisan optimize
如果问题仍然存在,那么手动删除文件bootstrap/cache/services.json
,它将在下一个请求