Laravel 5.2 - 使用controller store()插入新的DB记录

时间:2016-03-27 16:12:46

标签: laravel

我们说我有一个名为try { $dbh->beginTransaction(); // A set of queries; if one fails, an exception should be thrown $stmt1 = $dbh->prepare('first query'); $stmt2 = $dbh->prepare('second query'); $stmt3 = $dbh->prepare('third query'); if ($stmt1->execute() && $stmt2->execute() && $stmt3->execute()) { $dbh->commit(); } } catch(Exception $e) { $dbh->rollback(); } // output data of each row while ($rows = $stmt1->fetch(PDO::FETCH_ASSOC)) { ... } // output data of each row while ($rows = $stmt2->fetch(PDO::FETCH_ASSOC)) { ... } // output data of each row while ($rows = $stmt3->fetch(PDO::FETCH_ASSOC)) { ... } 的控制器,我想创建一个新的英雄对象并将其作为新英雄插入我的数据库。

我的控制器包含以下方法:

HeroController

我希望在用户发布"添加新英雄时使用此方法"形成。 实际上会发生的是我通过我的public function store(Request $request) { $hero = new Hero; $hero->name = $request->name; $hero->description = $request->description; $hero->avatar = "None"; $hero->save(); return redirect('/'); } 文件创建一个新的英雄:

routes.php

为什么我的英雄是在Route::post('/heroes/create', function (Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required|max:255', ]); if ($validator->fails()) { return redirect('/') ->withInput() ->withErrors($validator); } $hero = new Hero; $heroname = $request->name; $hero->save(); return redirect('/'); }); 中创建的,以及如何更改它以使用我的HeroController?这种感觉更合适..

3 个答案:

答案 0 :(得分:2)

您真的需要了解RESTful controllers和资源路线。这正是你想要的。

https://laravel.com/docs/5.1/controllers#restful-resource-controllers

您应该使用create操作返回包含英雄创建表单和store操作的视图,以根据用户输入在数据库中创建和保存数据。

所以所有的逻辑都在一个控制器内,你将拥有的唯一路线是:

Route::resource('heroes', 'HeroController');

答案 1 :(得分:1)

非常直接,如果我理解正确的话:

Route::post('/heroes/create', 'HeroController@store');

最好通过控制器docs

答案 2 :(得分:1)

将路线更改为                         路线::后( “英雄/创建”, “@ HeroController商店”);

将当前路线的内容复制到HeroController中的商店功能