如何将数据插入Database Laravel?

时间:2014-09-26 19:35:42

标签: php laravel laravel-4

我是编程新手。我在views / register.blade.php中创建了一个基本表单,如下所示

         @section('content')
<h1>Registration Form</h1><hr>
<h3>Please insert the informations bellow:</h3>
{{Form::open(array('url'=>'test/register','method'=>'post'))}}
<input type="text" name="username" placeholder="username"><br><br>
<input type="text" name="email" placeholder="email"><br><br>
<input type="password" placeholder="password"><br><br>
<input type="submit" value="REGISTER NOW!">
{{Form::close()}}@stop

我有一个控制器。像这样

         public function create()
         {
             $user= Input::all();
               $user = new User;
               $user->username = Input::get('username');
               $user->email = Input::get('email');
               $user->password = Input::get('password');
               $user->save();

            return Redirect::back();
        } 

这是我的路线:

Route::get('test/register', array('uses'=>'TestController@create'))

我无法通过表单注册用户。你能建议我怎么做吗?

3 个答案:

答案 0 :(得分:9)

错误MethodNotAllowedHttpException表示路由存在,但HTTP方法(GET)错误。您必须将其更改为POST:

Route::post('test/register', array('uses'=>'TestController@create'));

此外,您需要哈希密码:

public function create()
{
    $user = new User;

    $user->username = Input::get('username');
    $user->email = Input::get('email');
    $user->password = Hash::make(Input::get('password'));
    $user->save();

    return Redirect::back();
}

我删除了该行:

$user= Input::all();

因为在下一个命令中用

替换其内容
$user = new User;

要调试输入,您可以在控制器的第一行:

dd( Input::all() );

它将显示输入中的所有字段。

答案 1 :(得分:2)

确保使用 POST 插入数据。实际上你正在使用 GET

答案 2 :(得分:0)

你可以尝试这个第一种方法

$department->department_name = $request->department_name;
$department->status = $request->status;
$department->save();

使用create function

将记录插入数据库的另一种方法
$department = new Department;           
// Another Way to insert records
$department->create($request->all());

return redirect('admin/departments');

您需要在Department模型中设置填充

namespace App;

use Illuminate\Database\Eloquent\Model;

class Department extends Model
{
    protected $fillable = ['department_name','status'];
}