我想在保存或更新时验证我的模型是否有效。 所以我创建了一个名为EloquentValidating的classe,我从中为所有模型扩展了类。 这是我在EloquentValidating中的启动功能:
public static function boot()
{
parent::boot();
static::creating(function($item)
{
if(!$item->isValid()) return false;
});
static::updating(function($item)
{
if(!$item->isValid()) return false;
});
}
我遇到的问题是永远不会调用启动。我已经在其中设置了一个断点,它永远不会消失。所以我的模型在保存之前没有验证。
我有另一个使用相同逻辑的项目,它正在运行。我能看到的唯一区别是我在另一个项目中有名称空间,而不是在这个项目中。所以失败的类被定义为
use Illuminate\Database\Eloquent\Model;
class EloquentValidating extends Model {
而工作的定义为:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class EloquentValidating extends Model {
命名空间会导致这种问题,为什么??? 如果我必须引入命名空间,我会,但我想理解为什么它是原因。
感谢 贝努瓦
答案 0 :(得分:1)
看起来您需要更新已编译的类。运行
php artisan clear-compiled
...然后
php artisan optimize
如果问题仍然存在,请手动删除文件bootstrap/cache/services.json
,它将在下一个请求中自动生成