Creating Model

Last Updated: February 7, 2020

You can create Model in Laravel using the following artisan command
This will create a Model named Post

php artisan make:model Post --migration

If you want to create the models inside Models folder you can use the following command

php artisan make:model Models/Post --migration

Model will be created at App/Models/Post.php

Above code will create a model named “POST” with migration file
You can see the migration file created at database\migrations folder

I have edited the file to introduce name and text fields to Post model

  public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->string('text');
            $table->timestamps();
        });
    }

Now you can run the migrate

php artisan migrate

This will create the table in the database provided that you have the correct database setting in the .env file

You can have the following data types when you update your migration file

$table->bigIncrements('id'); 	Auto-incrementing UNSIGNED BIGINT (primary key) equivalent column.
$table->bigInteger('votes'); 	BIGINT equivalent column.
$table->binary('data'); 	BLOB equivalent column.
$table->boolean('confirmed'); 	BOOLEAN equivalent column.
$table->char('name', 100); 	CHAR equivalent column with an optional length.
$table->date('created_at'); 	DATE equivalent column.
$table->dateTime('created_at'); 	DATETIME equivalent column.
$table->dateTimeTz('created_at'); 	DATETIME (with timezone) equivalent column.
$table->decimal('amount', 8, 2); 	DECIMAL equivalent column with a precision (total digits) and scale (decimal digits).
$table->double('amount', 8, 2); 	DOUBLE equivalent column with a precision (total digits) and scale (decimal digits).
$table->enum('level', ['easy', 'hard']); 	ENUM equivalent column.
$table->float('amount', 8, 2); 	FLOAT equivalent column with a precision (total digits) and scale (decimal digits).
$table->geometry('positions'); 	GEOMETRY equivalent column.
$table->geometryCollection('positions'); 	GEOMETRYCOLLECTION equivalent column.
$table->increments('id'); 	Auto-incrementing UNSIGNED INTEGER (primary key) equivalent column.
$table->integer('votes'); 	INTEGER equivalent column.
$table->ipAddress('visitor'); 	IP address equivalent column.
$table->json('options'); 	JSON equivalent column.
$table->jsonb('options'); 	JSONB equivalent column.
$table->lineString('positions'); 	LINESTRING equivalent column.
$table->longText('description'); 	LONGTEXT equivalent column.
$table->macAddress('device'); 	MAC address equivalent column.
$table->mediumIncrements('id'); 	Auto-incrementing UNSIGNED MEDIUMINT (primary key) equivalent column.
$table->mediumInteger('votes'); 	MEDIUMINT equivalent column.
$table->mediumText('description'); 	MEDIUMTEXT equivalent column.
$table->morphs('taggable'); 	Adds taggable_id UNSIGNED BIGINT and taggable_type VARCHAR equivalent columns.
$table->multiLineString('positions'); 	MULTILINESTRING equivalent column.
$table->multiPoint('positions'); 	MULTIPOINT equivalent column.
$table->multiPolygon('positions'); 	MULTIPOLYGON equivalent column.
$table->nullableMorphs('taggable'); 	Adds nullable versions of morphs() columns.
$table->nullableTimestamps(); 	Alias of timestamps() method.
$table->point('position'); 	POINT equivalent column.
$table->polygon('positions'); 	POLYGON equivalent column.
$table->rememberToken(); 	Adds a nullable remember_token VARCHAR(100) equivalent column.
$table->smallIncrements('id'); 	Auto-incrementing UNSIGNED SMALLINT (primary key) equivalent column.
$table->smallInteger('votes'); 	SMALLINT equivalent column.
$table->softDeletes(); 	Adds a nullable deleted_at TIMESTAMP equivalent column for soft deletes.
$table->softDeletesTz(); 	Adds a nullable deleted_at TIMESTAMP (with timezone) equivalent column for soft deletes.
$table->string('name', 100); 	VARCHAR equivalent column with a optional length.
$table->text('description'); 	TEXT equivalent column.
$table->time('sunrise'); 	TIME equivalent column.
$table->timeTz('sunrise'); 	TIME (with timezone) equivalent column.
$table->timestamp('added_on'); 	TIMESTAMP equivalent column.
$table->timestampTz('added_on'); 	TIMESTAMP (with timezone) equivalent column.
$table->timestamps(); 	Adds nullable created_at and updated_at TIMESTAMP equivalent columns.
$table->timestampsTz(); 	Adds nullable created_at and updated_at TIMESTAMP (with timezone) equivalent columns.
$table->tinyIncrements('id'); 	Auto-incrementing UNSIGNED TINYINT (primary key) equivalent column.
$table->tinyInteger('votes'); 	TINYINT equivalent column.
$table->unsignedBigInteger('votes'); 	UNSIGNED BIGINT equivalent column.
$table->unsignedDecimal('amount', 8, 2); 	UNSIGNED DECIMAL equivalent column with a precision (total digits) and scale (decimal digits).
$table->unsignedInteger('votes'); 	UNSIGNED INTEGER equivalent column.
$table->unsignedMediumInteger('votes'); 	UNSIGNED MEDIUMINT equivalent column.
$table->unsignedSmallInteger('votes'); 	UNSIGNED SMALLINT equivalent column.
$table->unsignedTinyInteger('votes'); 	UNSIGNED TINYINT equivalent column.
$table->uuid('id'); 	UUID equivalent column.
$table->year('birth_year'); 	YEAR equivalent column.