How can I insert data into Database Laravel?

118,988

Solution 1

The error MethodNotAllowedHttpException means the route exists, but the HTTP method (GET) is wrong. You have to change it to POST:

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

Also, you need to hash your passwords:

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();
}

And I removed the line:

$user= Input::all();

Because in the next command you replace its contents with

$user = new User;

To debug your Input, you can, in the first line of your controller:

dd( Input::all() );

It will display all fields in the input.

Solution 2

make sure you use the POST to insert the data. Actually you were using GET.

Share:
118,988
MD. Atiqur Rahman
Author by

MD. Atiqur Rahman

I am enthusiastic, reliable, fast learner and hardworking individual who has over 4 years of experience working with wordpress, woocommerce, shopify, magento, prestashop, bigcommerce and any kinds of php/Laravel web app.

Updated on March 03, 2020

Comments

  • MD. Atiqur Rahman
    MD. Atiqur Rahman about 4 years

    I'm new to programming. I have created a basic form inside views/register.blade.php like this

             @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
    

    I have a controller. like this

             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();
            } 
    

    Here is my route:

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

    I can not register users through the form. Would you please suggest me how to do that?

  • MD. Atiqur Rahman
    MD. Atiqur Rahman over 9 years
    I have done this. Still it has an error. The error is : SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'password' cannot be null (SQL: insert into users (username, email, password, updated_at, created_at) values (sss, [email protected], , 2014-09-26 19:43:23, 2014-09-26 19:43:23))
  • Antonio Carlos Ribeiro
    Antonio Carlos Ribeiro over 9 years
    Now you have a different problem, your password field is empty!
  • MD. Atiqur Rahman
    MD. Atiqur Rahman over 9 years
    Yes. But I inserted my password. Why does it show empty?
  • MD. Atiqur Rahman
    MD. Atiqur Rahman over 9 years
    Alright. It works. I am familiar with core php. I did basic authentication, so I tried not to Hash the password at all. Thanks for the solution. I owe you . :)
  • Antonio Carlos Ribeiro
    Antonio Carlos Ribeiro over 9 years
    Nice. No problem, mate.
  • Asif Shahzad
    Asif Shahzad over 7 years
    From creating new migration to creating form and then inserting record in database, with sample code and output devtrainings.com/2016/05/…