Модельный бизнес

Mar 28, 08:30 am Категория:

Кажется я сильно погорячился с заявлением, что мне для начала нужны только миграции, а модели потом. Ну закачал я данные в базу, ну порадовался, что могу ими теперь пользоваться. А ведь и не могу. От слова совсем. Для работы с базами данных в Laravel предназначены модели. В них же рекомендуют выносить из контроллеров и бизнес логику. А раз нужны модели, то таблицы нужно приводить в порядок, описывать связи, устанавливать правила и описывать как оно вообще должно работать.

Сначала о моделях. В Laravel это расширение базового класса Model используемой ORM Eloquent. ORM (англ. Object-Relational Mapping) – это объектно-реляционное отображение. По-русски это звучит столь же непотребно: реализация ООП шаблона Active Record по кличке Красноречивый решает. А если на практике, то всё просто отлично. Создаём модель

php artisan make:model Article

или модель с миграцией

php artisan make:model Article --migration

Про миграции надеюсь, всё понятно: сгенерируется отличный каркас миграции по имени 2016_03_23_030541_create_articles_table.php, в который следует добавить нужное и убрать лишнее для создания таблицы articles. А каркас модели для управления этой таблицей по имени Article выглядит вот так

<?php  namespace App;
 
use Illuminate\Database\Eloquent\Model;
 
class Article extends Model
{
    //
}

И… А всё, можно создавать объекты класса Article и пользоваться всеми возможностями ORM. Например, создать новую статью, задать заголовок и содержимое, записать статью в базу:

$article = new Article;
$article->title = 'Крутая статья';
$article->title = 'Улётный текст статьи';
$article->save();

Это уже работает. Кроме шуток. Первые тесты я проводил на простых сайтах, имеющих примитивные сценарии работы. Создал модели и даже не заглядывал в них. Просто получал из базы нужные данные и перекидывал их в представления. В моделях Laravel вообще куча вполне разумных умолчаний, позволяющих использовать их без долгих прелюдий, а вся мощь ORM Eloquent наследуется и доступна без дополнительных телодвижений. Имя таблицы базы данных, к примеру – это множественное число имени модели в нижнем регистре. Не устраивает? Можно задать своё.

Но если выходить за пределы тестовых заданий и лабораторных работ, то придётся немного поработать как руками, так и головой. Голова потребуется для понимания связей в базах данных вообще и в Eloquent в частности. А руками связи нужно будет закодировать и заставить работать. И тогда без проблем будут находиться теги, авторы и комментарии статей, а так же статьи авторов и категорий. Связи решают. Такой вывод.

Теги этой статьи: , , , , ,

 

Комментарии

2017-10-18 10:18 pm , Оставь комментарий