AppServiceProvider
1 | use Illuminate\Support\Facades\Schema; |
AppServiceProvider
1 | use Illuminate\Support\Facades\Schema; |
解决方法:https://github.com/laravel/passport/issues/221
In your oauth_clients table, do the values you have above exist exactly as you have them in your database?
oauth_clients
1 | id - 3 |
If it doesn't exist exactly like that in the database for passport.dev then it will throw the invalid_client error. Please be sure to check that and we will see if any further investigation is needed.
还需要查看 oauth_clients
表的
password_client
是否为 1
public function boot() { LumenPassport::routes($this->app->router); }
该方法的参数应该传递 $this->app->router
而不是
$this->app
什么是嵌套事务? 一般情况下我们都是一个 begin
, 一个
commit
或 rollBack
, 但是有可能我们有种场景需要
begin
然后在事务里面再开一个事务, 这就是嵌套事务.
MySQL
嵌套事务支持
MySQL
里面有个 savepoint
关键字,
可以模拟嵌套事务, 但事实上并不是真正的嵌套事务, 仍然是一个事务.savepoint
的用处, 我们可以回滚事务内的部分修改Laravel
嵌套事务使用
DB::beginTransaction()
里面再次使用
DB::beginTransaction()
即可, 但需要注意开启事务的次数需要和
commit
或 rollBack
的次数对应如 $this->post
,然后又
$this->post
,我们会发现第二个请求中的请求参数是和第一个请求的参数是完全一样的,
然后在 Controller
里面通过 spl_object_hash
方法发现两个请求的 request
实例是一样的,
应该是第二个请求发起的时候,request
不再实例化,直接使用了上一次请求的 request
实例。
这种情况我们可以用过 request
实例的 replace
方法,替代掉 request
实例的请求参数,这样我们第二个请求就可以按照我们预期地跑了。
1 | $this->post('xxx', ['a' => 1]); |
mock
的时候,mock
一个不存在的方法不会报错其实这也算是 mock
本身要实现的功能,但是如果我们可能在调用多个对象的方法的时候会混淆,mock
了一个错误的对象的方法,但实际上应该是 mock
另外一个。
如果我们 mock
了之后,对象方法表现还是原来的样子就应该考虑一下是不是 mock
了一个错误的对象。
private
final
static
方法进行
mock
,需要对 mock
的对象调用
setMethods
,说明我们要对哪些方法进行
mock
,否则可能会报错。