代码不能创建数据
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);