Brad_Fresh
Brad_Fresh

Reputation: 119

How to store data in Laravel

I try to store data to DB.
Following your recommendations, I created a schema

Schema::create('user_info', function (Blueprint $table) {
      $table->string('name')->index();
      $table->string('ip');
      $table->timestamp('created_at')->nullable();
});

I created a model for a UserInfo where I plan to store IP and name

class UserInfo extends Model
{
   protected $fillable = ['ip']; 
}

In HomeController

public function store(Request $request) {
   $user_info = new UserInfo;
   $user_info->ip = $request->ip;
   $user_info->name = $request->name;
   $user_info->save();
}
UserInfo::create(['user_info' => Request::user_info()]);

As a result, I've got the below-given error

Method Illuminate\Http\Request::user_info does not exist.

Upvotes: 1

Views: 1723

Answers (2)

zahid hasan emon
zahid hasan emon

Reputation: 6233

Look there are several issues. Firstly in Schema consider using an incremental id as the primary key.

Add name in the fillable property.

protected $fillable = ['name','ip'];

And finally in the controller either use one procedure to save to the database.

public function store(Request $request) {
    $user_info = new UserInfo;

    $user_info->ip = $request->ip;
    $user_info->name = $request->name;
    $user_info->save();
}

Or

public function store(Request $request) {
    UserInfo::create([
        'name' => $request->name,
        'ip'   => $request->ip
    ]);
}

Upvotes: 2

ajthinking
ajthinking

Reputation: 4538

Request is a class. Instead, use the $request variable provided as an argument in your function:

 UserInfo::create(['user_info' => $request->input('user_info')]);

Upvotes: 0

Related Questions