在Laravel 4中,我不能在另一个连接中创建数据


in Laravel 4, i can't create data in another connection

代码不能创建数据

UserToken::on('user')->create($token_data);

result:{"error":{"type":"BadMethodCallException","message":"调用未定义方法Illuminate'Database'Query'Builder::create()","file":"F:'web'vgooo_laravel'vendor'laravel'framework'src'Illuminate'Database'Query'Builder.php","line":2094}}

和我尝试另一个代码

$UserToken = new UserToken();
DB::connection('user')->table($UserToken->getTable())->insert($token_data);

结果:成功

为什么我不能使用"on",是一个bug

From Laravel source for Illuminate'Database'Eloquent'Model:

/**
 * Begin querying the model on a given connection.
 *
 * @param  string  $connection
 * @return 'Illuminate'Database'Eloquent'Builder|static
 */
public static function on($connection = null)
{
    // First we will just create a fresh instance of this model, and then we can
    // set the connection on the model so that it is be used for the queries
    // we execute, as well as being set on each relationship we retrieve.
    $instance = new static;
    $instance->setConnection($connection);
    return $instance->newQuery();
}

您的on()调用返回'Illuminate'Database'Eloquent'Builder,但您试图调用的create()方法仅在Eloquent的Model类中可用。

你可以这样做:

$user = new UserToken;
$user->setConnection('user');
$user->create($token_data);

或者用Query Builder的方式:

UserToken::on('user')->insert($token_data);