我试图更改保存事件的连接。以下是我到目前为止所做的事情:
我在saving
方法上制作和活动:
protected static function boot()
{
parent::boot();
static::saving(function($model)
{
$model->connection = 'test';
var_dump($model);
return $model;
});
}
然后我在User
上保存。
$user = new User();
$user->save();
完成后,它仍然使用默认的connection
而不是我设置的test
- 连接。
我在default
中配置了test
和app/config/database.php
连接,您可以在下面看到:( OBS:更改为prefix
)
// ...
'connections' => array(
'default' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'database',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'test' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'database',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'test_',
),
),
// ...
var_dump
结果如下,您可以看到$model->connection
已被更改。
object(User)[159]
...
protected 'connection' => string 'default' (length=7)
...
但由于某些原因,它仍然会进入表users
而不是test_users
。
有没有人知道如何使这项工作?
答案 0 :(得分:0)
我通过重写Eloquent的save
方法找到了一种方法。
public function save(array $options = array())
{
// set draft connection
Config::set('database.default', 'test');
// do the actual save
parent::save($options);
// change back to original connection
Config::set('database.default', 'default');
}