Модели расширяют класс Illuminate\Database\Eloquent\Model
.
Создание модели
Чтобы создать модель нужно воспользоваться командой:
php artisan make:model Posts
Файл модели будет помещен в директорию App/Models/
.
Флаги:
Создать Модель и Миграцию
php artisan make:model Posts --migration
php artisan make:model Posts --m
Создать Модель и Фабрику
php artisan make:model Posts --factory
php artisan make:model Posts -f
Создать Модель и Сидер
php artisan make:model Posts --seed
php artisan make:model Posts -s
Создать Модель и Контроллер
php artisan make:model Posts --controller
php artisan make:model Posts -c
Создать Модель и Политику
php artisan make:model Posts --policy
Создать Модель, Миграцию, Фабрику, Сидер, Контроллер
php artisan make:model Posts -mfsc
Создать всё
php artisan make:model Posts --all
Параметры модели
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class TasksItem extends Model
{
//Использовать программное удаление. Добавляет поле deleted_at, в которое вносится дата удаления
use SoftDeletes;
//Имя, связанной с моделью, таблицы. По умолчанию, имя модели переводится из camelCase в snake_case и это будет названием таблицы.
protected $table = 'tasks_item';
//Определяет необходимость отметок времени для модели - created_at, updated_at, deleted_at.
public $timestamps = true;
//Формат хранения отметок времени модели.
protected $dateFormat = 'U';
//Указать названия полей меток времени
const CREATED_AT = 'creation_date';
const UPDATED_AT = 'last_update';
//Настройка формата времени
protected function getDateFormat()
{
return 'U';
}
//Название соединения для модели.
protected $connection = 'connection-name';
}
Примеры получения данных
1. Получить все записи
<?php
$posts = Posts::all();
2. Получить 10 последних записей.
<?php
$posts = Posts::where('published', 1)
->orderByDesc('publishedon')
->take(10)
->get();
Примеры внесения данных
1. Добавить строку в БД на основе данных
public function store(Request $request)
{
// Валидация запроса ...
$post = new Post;
$post->name = $request->title;
$post->save();
}
Примечание. Временные метки
timestamps
устанавливаются автоматически, если они не были исключены в модели.
2. Альтернативный метод create() для внесения данных
$post = Post::create([
'title' => 'Test title',
]);
Примечание. При использовании этого метода, в модели должно быть определено свойство
$fillable
или$guarded
во избежание массового присвоения.
Примеры обновления данных
public function update (Request $request)
{
// Валидация запроса ...
$post= Post::find(1);
$post->title = $request->title;
$post->save();
}