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)