Laravel : add new row in model table

44,030

Assumed that, you have a User model (app/models/User.php) the one came with Laravel by default, which may look like this:

use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {
    
    protected $table = 'users';
    protected $hidden = array('password');

    public function getAuthIdentifier()
    {
        return $this->getKey();
    }
    
    public function getAuthPassword()
    {
        return $this->password;
    }

    public function getReminderEmail()
    {
        return $this->email;
    }
}

Now, from a controller (Basically) you may use somethng like this:

$user = new user;
$user->username= 'Me';
$user->email = '[email protected]';
// add more fields (all fields that users table contains without id)
$user->save();

There are other ways, for example:

$userData = array('username' => 'Me', 'email' => '[email protected]');
User::create($userData);

Or this:

User::create(Input::except('_token'));

This requires you to use a property in your User model like this:

class User extends Eloquent implements UserInterface, RemindableInterface {

    protected $fillable = array('username', 'email');

    // Or this,  (Read the documentation first before you use it/mass assignment)
    protected $guarded = array();

}

Since, you are still new to Laravel you may use first example and read about Mass Assignment, then you may use the second one if you want.

Update:

In your controller, you may use Input::get('formfieldname') to get the submitted data, for example:

$username = Input::get($username);

So, you can use these data like this:

$user = new User;
$user->username= $username;

Or directly you can use:

$user->email = Input::get($email);
$user->save();

In the form, you have to set the form action, where you'll submit the form and in this case you have to declare a route, for example:

Route::post('user/add', array('as' => 'user.add', 'uses' => 'UserController@addUser'));

Then in your controller you have to create the method addUser, like this:

class UserController extends addUser {
    
    // other methods
    
    public function addUser()
    {
        $user = new user;
        $user->username = Input::get('username');
        $user->email = Input::get($email);
        $user->save();
    }
}

In your form you may use this:

Form::open(array('route' => 'user.add'))

Read the documentation properly, you can do it easily.

Share:
44,030
Tarik Mokafih
Author by

Tarik Mokafih

Updated on July 12, 2022

Comments

  • Tarik Mokafih
    Tarik Mokafih almost 2 years

    I have a user model defined, and I'm trying to add a new user in my database using a form, what is the best and fastest way to do it, I have read something about model forms binding but I think it's just for updating not for adding new rows.

    I'm new in Laravel and couldn't find some good tutorials, I must recognize that Laravel documentation is really poor, so any links to some good and well explained tutorials are welcomed. Thank you