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

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 в частности. А руками связи нужно будет закодировать и заставить работать. И тогда без проблем будут находиться теги, авторы и комментарии статей, а так же статьи авторов и категорий. Связи решают. Такой вывод.

MVC Model-View-Controller

Mar 13, 03:51 am Категория:   Комментарии

Ладно, оттоптался по другим, займись своим. Благо есть чем. После изучения страницы этого сайта я обнаружил много интересных ссылок. Помимо обычных ссылок нашлись агрегатные и технические. Что с ними делать я просто не представляю. Взять, к примеру, категории. Зачем они нужны? Если это каталог или магазин, то категории служат для выстраивания иерархии объектов. И чем сложнее каталог, тем больше уровней иерархии нужно вводить. Для сайтов с большим объёмом различного контента категории – это фильтр, но структура плоская. Категории же на обычном сайте – это понты и проблемы для пользователя. Зато поисковые боты должны быть в восторге от каждой новой системы ссылок на сайте. Как-то так получается. Или не получается?

Весь текст статьи

Ша - шаблон проектирования

Mar 9, 02:02 am Категория:   Комментарии

Две вещи я не понимаю в этом мире: как можно делать бестолковые тестовые задания и как можно не понимать, что нельзя давать делать бестолковые тестовые задания. Учить новый язык или новый фреймворк можно по-разному, но для получения какого-либо вменяемого результата следует делать не “надувной” проект из учебника, а нормальный боевой сайт. В случае с Laravel можно переводить сайты с TxP на новую платформу. При этом, разумеется, новые сайты могут иметь старый внешний вид, структуру и что-нибудь ещё, но спроектированы и реализованы в соответствии с новой парадигмой.

Весь текст статьи

Объекты, паттерны и прочий полиморфизм

Feb 17, 10:56 am Категория:   Комментарии

Существуют различные подходы к сравнению языков программирования. Но PHP имеет славу однозначного отстоя. “Рождён чтобы умирать” – это сказано именно про него. Созданный для наколенной вёрстки домашних страничек он жил, старел и набирал армию разработчиков этих самых примитивных страничек. Понятно, что придумать выбор хуже PHP практически невозможно. На этом с PHP можно было бы попрощаться, если бы не пара нюансов: на PHP базируется один из самых популярных вебфреймворков Laravel и это 4-й по популярности язык программирования. В мире.

Весь текст статьи