如何找到开始的交易?
How to find started transaction?
控制器代码:
public function update(ContractTypeStoreAndUpdateRequest $request, ContractType $contractType): ContractTypeResource
{
$contractType->is_active = $request->input('is_active');
$contractType->name = $request->input('name');
$contractType->short_name = $request->input('short_name');
$contractType->description = $request->input('description');
$pdo = DB::connection()->getPdo();
$pdo->exec('SET TRANSACTION ISOLATION LEVEL READ COMMITTED');
DB::beginTransaction();
if ($request->has('feature')) {
if ($contractType->contracts()->count() !== 0) {
throw ValidationException::withMessages(
[
'feature' => 'Тип договора имеет привязанный договор изменить невозможно',
]
);
}
$contractType->feature = $request->input('feature');
}
$contractType->save();
DB::commit();
return ContractTypeResource::make($contractType);
}
当我 运行 测试这个点时,我收到以下错误:
Active sql transaction: 1568 Transaction characteristics can't be
changed while a transaction is in progress
我理解错误消息,但我无法假设 transaction
之前可能从哪里开始?
Laravel
在幕后对 transaction
做些什么(验证、身份验证)?
如何找到之前开始交易的地方?
我明白了。
我的测试使用了这个特性\Illuminate\Foundation\Testing\DatabaseTransactions
它涵盖了交易中的测试。最后回滚以保持数据库清洁。
控制器代码:
public function update(ContractTypeStoreAndUpdateRequest $request, ContractType $contractType): ContractTypeResource
{
$contractType->is_active = $request->input('is_active');
$contractType->name = $request->input('name');
$contractType->short_name = $request->input('short_name');
$contractType->description = $request->input('description');
$pdo = DB::connection()->getPdo();
$pdo->exec('SET TRANSACTION ISOLATION LEVEL READ COMMITTED');
DB::beginTransaction();
if ($request->has('feature')) {
if ($contractType->contracts()->count() !== 0) {
throw ValidationException::withMessages(
[
'feature' => 'Тип договора имеет привязанный договор изменить невозможно',
]
);
}
$contractType->feature = $request->input('feature');
}
$contractType->save();
DB::commit();
return ContractTypeResource::make($contractType);
}
当我 运行 测试这个点时,我收到以下错误:
Active sql transaction: 1568 Transaction characteristics can't be changed while a transaction is in progress
我理解错误消息,但我无法假设 transaction
之前可能从哪里开始?
Laravel
在幕后对 transaction
做些什么(验证、身份验证)?
如何找到之前开始交易的地方?
我明白了。
我的测试使用了这个特性\Illuminate\Foundation\Testing\DatabaseTransactions
它涵盖了交易中的测试。最后回滚以保持数据库清洁。