Laravel db事务一半条件
Laravel db transaction half condition
您好,我在我的 laravel 应用程序中发现了一些错误,想知道如何修复它:/
我的控制器代码
public function patvirtinimas($id,$bookid)
{
return \View::make('grazintiknyga.patvirtinti',compact('id','bookid'));
}
public function grazintiknygasave($id,$bookid,Request $request)
{
if(Input::get('taip'))
{
$grazinimas = Carbon::now();
$grazinimas->format("Y-m-d");
$kasprieme = Auth::user()->id;
$resetas = NULL;
//dd($kasprieme);
DB::beginTransaction();
try {
DB::table('borrows')
->where('id', $id)
->update(['grazinimo_data' => $grazinimas,
'prieme' => $kasprieme
]);
DB::table('books')
->where('id', $bookid)
->update(['isdavimo_data' => $resetas,
'terminas' => $resetas,
'grazinimo_data' => $resetas
]);
DB::commit();
// jeigu viskas gerai
} catch (\Exception $e) {
DB::rollback();
dd($e);
// jeigu kazkas negerai
}
return \Redirect::to(url('grazinti-knyga'))->with('grazinta','Knyga grąžinta sėkmingai!');
}
elseif(Input::get('ne'))
{
return \Redirect::to(url('grazinti-knyga'))->with('negrazinta','Knygos grąžinimas atšauktas!');
}
}
一个函数用于查看另一个用于更新数据库中的表
路线
Route::get('patvirtinti-grazinima-{id}-{bookid}', 'BorrowController@patvirtinimas');
Route::post('grazinimas-save-{id}-{bookid}', 'BorrowController@grazintiknygasave');
问题是当我直接在浏览器中编辑路线时 grazinimas-save-{someid}-{somebookid}
当其中一个参数与其他参数匹配时,则一半的数据库事务有效并且
其他不更新并破坏我的数据库:?有人可以帮助修复这个错误吗?这两个参数必须在数据库中匹配才能更新。也许有一些参数隐藏和验证?
斜线 /
是在路由中分隔参数的预期方式。
您的参数没有正确传递给您的控制器。
将路线更改为以下内容(如果可以)
Route::get('patvirtinti-grazinima/{id}/{bookid}', 'BorrowController@patvirtinimas');
Route::post('grazinimas-save/{id}/{bookid}', 'BorrowController@grazintiknygasave');
另一种选择是在您的控制器或中间件中处理逻辑 (https://laracasts.com/discuss/channels/laravel/using-dash-instead-of-slash-in-routes)
您好,我在我的 laravel 应用程序中发现了一些错误,想知道如何修复它:/
我的控制器代码
public function patvirtinimas($id,$bookid)
{
return \View::make('grazintiknyga.patvirtinti',compact('id','bookid'));
}
public function grazintiknygasave($id,$bookid,Request $request)
{
if(Input::get('taip'))
{
$grazinimas = Carbon::now();
$grazinimas->format("Y-m-d");
$kasprieme = Auth::user()->id;
$resetas = NULL;
//dd($kasprieme);
DB::beginTransaction();
try {
DB::table('borrows')
->where('id', $id)
->update(['grazinimo_data' => $grazinimas,
'prieme' => $kasprieme
]);
DB::table('books')
->where('id', $bookid)
->update(['isdavimo_data' => $resetas,
'terminas' => $resetas,
'grazinimo_data' => $resetas
]);
DB::commit();
// jeigu viskas gerai
} catch (\Exception $e) {
DB::rollback();
dd($e);
// jeigu kazkas negerai
}
return \Redirect::to(url('grazinti-knyga'))->with('grazinta','Knyga grąžinta sėkmingai!');
}
elseif(Input::get('ne'))
{
return \Redirect::to(url('grazinti-knyga'))->with('negrazinta','Knygos grąžinimas atšauktas!');
}
}
一个函数用于查看另一个用于更新数据库中的表
路线
Route::get('patvirtinti-grazinima-{id}-{bookid}', 'BorrowController@patvirtinimas');
Route::post('grazinimas-save-{id}-{bookid}', 'BorrowController@grazintiknygasave');
问题是当我直接在浏览器中编辑路线时 grazinimas-save-{someid}-{somebookid}
当其中一个参数与其他参数匹配时,则一半的数据库事务有效并且 其他不更新并破坏我的数据库:?有人可以帮助修复这个错误吗?这两个参数必须在数据库中匹配才能更新。也许有一些参数隐藏和验证?
斜线 /
是在路由中分隔参数的预期方式。
您的参数没有正确传递给您的控制器。
将路线更改为以下内容(如果可以)
Route::get('patvirtinti-grazinima/{id}/{bookid}', 'BorrowController@patvirtinimas');
Route::post('grazinimas-save/{id}/{bookid}', 'BorrowController@grazintiknygasave');
另一种选择是在您的控制器或中间件中处理逻辑 (https://laracasts.com/discuss/channels/laravel/using-dash-instead-of-slash-in-routes)