@Programmir

Нужна ли модель в yii2 в таком случае?

Дали тестовое задание по yii2. Пока вроде всё понятно, так как до этого изучал Laravel. Но я, например, не хочу использовать Active Record. Мне кажется, что проще писать нативные SQL-запросы, использую PDO. Получается, что в таком случае мне модель не нужна? И могут ли не взять на работу, если скажу, что мне удобнее через SQL-запросы, так как в Active Record можно запутаться?
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 4
kimono
@kimono
Web developer
Не думаю, что вас возьмут на должность Yii2 программиста, если вы всюду вместо нативных AR моделей будете использовать собственные классы с прямыми запросами через PDO (зачем?).
Это как заменить компьютеризированный руль на болиде F-1 штурвалом от корабля и ждать, что вас допустят к соревнованиям.
Ответ написан
Комментировать
proudmore
@proudmore
Если вы отказываетесь от AR и моделей, то валидировать данные будете либо сами, либо не будете вовсе. Плюс я не совсем понимаю, как можно запутаться в AR. Один объект - одна строка в таблице.
Если бы мне на собеседовании кто-то заявил, что будет работать через PDO, то незамедлительно отправился бы дальше в поисках работы.
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Получается, что в таком случае мне модель не нужна?

Модель это неотъемлемая часть MCV. Если просят сделать на yii, то ожидают наличие MCV.

Но я, например, не хочу использовать Active Record.

Ваше право, можете вообще поставить yii, а рядом написать все без его использования. Кучу таких проектов повидал. Но это если это Ваш проект. А если есть заказчик и он требует yii, то вероятно он ожидает увидеть AR. Так что вопрос не по адресу, Вы у заказчика спросите. Тем более если это тестовое задание. Тут проверяются Ваши знания yii. Так что в данном случае AR думаю обязательно к использованию. Так же как и другие методы и объекты framework-а.

так как в Active Record можно запутаться

Единственный аргумент к отказу от AR это производительность. Остальное, тем более "можно запутаться" - это веская причина Вас не брать. Так как он и сделан для простоты и читаемости кода. И путаница может быть только из-за его не знания.
Надо вначале изучить AR, а потом отказываться от него при необходимости. Но для тестового задания, если хотите показать знания pdo, то лучше реализовать и так и так и показать разницу. Вот это будет в плюс. Если сделаете без AR, потому что Вы его не знаете - ответ нанимателя будет очевидным.
Ответ написан
Maksclub
@Maksclub
maksfedorov.ru
Объясню популярно:
  • есть PDO
  • над ним есть обертка (то есть уже используется PDO в любом случае) под названием DAO
  • над DAO есть обертка Active Record, которая использует все, что нужно для 2 предыдущих слоев и автоматизирует многое за вас — то есть вам не нужно самим экранировать все и биндить тоже ничего не нужно, все это уже есть под капотом


Active Record
Для обычного использования — AR предостаточно, если нужно делать сложные выборки или вы начнете очищать свои модели, то всегда можно спуститься ниже и запилить свой запрос через DAO (это по стуи тоже PDO, но с более удобным интерфейсом)

Чтобы не балоболить, предлагаю прочитать мануалы от команды Yii2:

Хочу отметить, что Active Record считается самым простым для изучения, фактически в мире веб-разработки правят балом Active Record и Data Mapper(Doctrine) (не считая чистые запросы)... стоит изучить и пощупать оба варианта по 2-3 дня каждый и понять что, где и как... это вам даст бонусов, в Yii2 фактически AR не отделим от проекта...
Active Record используется в Ruby on Rails (от туда и пришел в мир PHP), используется в Yii2 и Laravel (Eloquent построен на этом паттерне), Data Mapper используется в основном в мире Symfony и опять Laravel

Умение делать чистые запросы ценится куда больше, чем умение работать с AR — потому смело идите работать или делайте их в тестовом... адекватный тим-лид заценит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы