Laravel 5.1:没有调用启动功能

时间:2015-10-21 04:16:31

标签: laravel-5.1

我想在保存或更新时验证我的模型是否有效。 所以我创建了一个名为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 {

命名空间会导致这种问题,为什么??? 如果我必须引入命名空间,我会,但我想理解为什么它是原因。

感谢 贝努瓦

1 个答案:

答案 0 :(得分:1)

看起来您需要更新已编译的类。运行

php artisan clear-compiled 

...然后

php artisan optimize

如果问题仍然存在,请手动删除文件bootstrap/cache/services.json,它将在下一个请求中自动生成