Model classes must extend Illuminate\Database\Eloquent\Model. The default location for models is the /app directory.
A model class can be easily generated by the Artisan command:
php artisan make:model [ModelName]This will create a new PHP file in app/ by default, which is named [ModelName].php, and will contain all the boilerplate for your new model, which includes the class, namespace, and using's required for a basic setup.
If you want to create a migration file along with your Model, use the following command, where -m will also generate the migration file:
php artisan make:model [ModelName] -mIn addition to creating the model, this creates a database migration that is hooked up to the model. The database migration PHP file is located by default in database/migrations/. This does not--by default--include anything other than the id and created_at/updated_at columns, so you will need to edit the file to provide additional columns.
Note that you will he to run the migration (once you he set up the migration file) in order for the model to start working by using php artisan migrate from project root
In addition, if you wish to add a migration later, after making the model, you can do so by running:
php artisan make:migration [migration name]Say for example you wanted to create a model for your Cats, you would he two choices, to create with or without a migration. You would chose to create without migration if you already had a cats table or did not want to create one at this time.
For this example we want to create a migration because we don't already he a table so would run the following command.
php artisan make:model Cat -mThis command will create two files:
In the App folder: app/Cat.php In the database folder: database/migrations/timestamp_creat_cats_table.phpThe file we are interested in is the latter as it is this file that we can decide what we want the table to look like and include. For any predefined migration we are given an auto incrementing id column and a timestamps columns.
The below example of an extract of the migration file includes the above predefined columns as well as the addition of a the name of the cat, age and colour:
public function up() { Schema::create('cats', function (Blueprint $table) { $table->increments('id'); //Predefined ID $table->string('name'); //Name $table->integer('age'); //Age $table->string('colour'); //Colour $table->timestamps(); //Predefined Timestamps }); }So as you can see it is relatively easy to create the model and migration for a table. Then to execute the migration and create it in your data base you would run the following command:
php artisan migrateWhich will migrate any outstanding migrations to your database.
Model File LocationModels can be stored anywhere thanks to PSR4.
By default models are created in the app directory with the namespace of App. For more complex applications it's usually recommended to store models within their own folders in a structure that makes sense to your apps architecture.
For example, if you had an application that used a series of fruits as models, you could create a folder called app/Fruits and within this folder you create Banana.php (keeping the StudlyCase naming convention), you could then create the Banana class in the App\Fruits namespace:
namespace App\Fruits; use Illuminate\Database\Eloquent\Model; class Banana extends Model { // Implementation of "Banana" omitted } Model configurationEloquent follows a "convention over configuration" approach. By extending the base Model class, all models inherit the properties listed below. Unless overridden, the following default values apply:
PropertyDescriptionDefaultprotected $connectionDB connection nameDefault DB connectionprotected $tableTable nameBy default, the class name is converted to snake_case and pluralized. For example, SpecialPerson becomes special_peopleprotected $primaryKeyTable PKidpublic $incrementingIndicates if the IDs are auto-incrementingtruepublic $timestampsIndicates if the model should be timestampedtrueconst CREATED_ATName of the creation timestamp columncreated_atconst UPDATED_ATName of the modification timestamp columnupdated_atprotected $datesAttributes that should be mutated to DateTime, in addition to the timestamps attributes[]protected $dateFormatFormat in which date attributes will be persistedDefault for current SQL dialect.protected $withRelationships to eagerload with model[]protected $hiddenAttributes omitted in model serialization[]protected $visibleAttributes allowed in model serialization[]protected $appendsAttribute accessors added to model serialization[]protected $fillableAttributes that are mass-assignable[]protected $guardedAttributes that are black-listed from mass assignment[*] (All attributes)protected $touchesThe relationships that should be touched on se[]protected $perPageThe number of models to return for pagination.15 5.0 PropertyDescriptionDefaultprotected $castsAttributes that should be casted to native types[]PDF - Download Larel for free Previous Next