我希望在用户模型中更改密码时设置密码。因此,我正在使用模型的boot方法:
<?php
namespace App\Model;
class User extends \Illuminate\Database\Eloquent\Model
{
protected $table = 'users';
public static function boot()
{
//die('here'); // this happens
User::saving(function ($user) {
//die('here'); // this doesn't happen
if ($user->isDirty('password')) {
$user->password = // hash password...
}
});
}
}
我在模型上使用save()方法创建数据库记录,理论上这应该触发创建事件。我已经清空了数据库表以确保正在创建新行(确实是如此),但该事件没有被触发 - 而我的密码是原始未加密的。顺便说一句,我的应用程序中使用的是illuminate/database ^5.2(而不是Laravel)。
更新 - 胶囊初始化
$capsule = new Illuminate\Database\Capsule\Manager;
$capsule->addConnection([
'driver' => 'mysql',
'host' => 'localhost',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'database' => 'mydb',
'username' => 'myuser',
'password' => 'mypass',
]);
$capsule->bootEloquent();