Size: a a a

Laravel Framework Russian Community

2020 November 19

MW

Maxyc Webber in Laravel Framework Russian Community
Nikita Sklyarov
Заюзали на проекте с ларавел или нет? Если да, хотелось бы прочитать это в статья.
Эти спецификации применяются уже после выборки из бд у вас или как?
- если да, то не кажется ли не совсем хорошей идеей брать все товары из базы, а потом фильтровать ненужные?
- если нет, тогда как это реализовано? Спецификации вносят изменения в запрос к бд?
В чём преимущества перед, например, добавлением query scope availableProducts в котором будут определены те же критерии получения продуктов (наличие, статус visible) и при изменении условий мы также изменим только одно место - скоуп.
За статью лайк в любом случае 😉
» Заюзали на проекте с ларавел или нет? Если да, хотелось бы прочитать это в статья.
я стараюсь уходить от рамок фреймворков в своей работе. в приведенных примерах в статье не важно в каком фреймворке это использовать, хоть в битриксе. это обычный класс без каких либо связей.

» Эти спецификации применяются уже после выборки из бд у вас или как?
скорее всего вы не поняли смысла паттерна. этот паттерн используется для вынесения бизнес условий в отдельный класс. чтобы потом, когда изменятся условия вам не приходилось искать все места, где поправить эти условия. все в одном месте. к бд это никакого отношения не имеет.

» не кажется ли не совсем хорошей идеей брать все товары из базы, а потом фильтровать ненужные?
тоже не верно поняли. там берутся не все. Мы взяли товары, которые есть в базе, вывели первую страницу с этими товарами. и при выводе, с использованием данного паттерна выводим или не выводим кнопку заказать. с помощью этого же паттерна проверяем доступность на складе для оформления корзины. все находится в одном месте. и когда изменится требование, то изменим только в 1 месте.

» Спецификации вносят изменения в запрос к бд?
этот паттерн никакого отношения к бд не имеет.
источник

NS

Nikita Sklyarov in Laravel Framework Russian Community
Тогда в чём смысл этой статьи? Просто описание паттерна? И что она делает в ларавел чате)
источник

MW

Maxyc Webber in Laravel Framework Russian Community
» В чём преимущества перед, например, добавлением query scope availableProducts в котором будут определены те же критерии получения продуктов (наличие, статус visible) и при изменении условий мы также изменим только одно место - скоуп.
как вы протестируете скоуп? а что, если у вас появилась новая сущность, не физический товар, а электронный и вы храните его в отдельной таблице? условия к покупке те же. получается будете и в другую модель копировать этот скоуп? а тут просто примените этот паттерн и готово.
источник

NS

Nikita Sklyarov in Laravel Framework Russian Community
Maxyc Webber
» В чём преимущества перед, например, добавлением query scope availableProducts в котором будут определены те же критерии получения продуктов (наличие, статус visible) и при изменении условий мы также изменим только одно место - скоуп.
как вы протестируете скоуп? а что, если у вас появилась новая сущность, не физический товар, а электронный и вы храните его в отдельной таблице? условия к покупке те же. получается будете и в другую модель копировать этот скоуп? а тут просто примените этот паттерн и готово.
а почему вы храните товар электронный в отдельной таблице? товар это товар, электронный/физический это тип товара, его свойство
источник

MW

Maxyc Webber in Laravel Framework Russian Community
Nikita Sklyarov
Тогда в чём смысл этой статьи? Просто описание паттерна? И что она делает в ларавел чате)
это описание паттерна, который можно использовать и в ларавел. я знаю тут многих, кто писал свой магазин. теперь пришло и мое время писать магазин.
поделился подходом, который помог мне и другим.
источник

MW

Maxyc Webber in Laravel Framework Russian Community
Nikita Sklyarov
а почему вы храните товар электронный в отдельной таблице? товар это товар, электронный/физический это тип товара, его свойство
это у меня пример не удачный.
источник

NS

Nikita Sklyarov in Laravel Framework Russian Community
> скорее всего вы не поняли смысла паттерна. этот паттерн используется для вынесения бизнес условий в отдельный класс. чтобы потом, когда изменятся условия вам не приходилось искать все места, где поправить эти условия. все в одном месте. к бд это никакого отношения не имеет.

я понимаю что паттерны не имеют отношения к бд) с выбором товаров это был пример

> тоже не верно поняли. там берутся не все. Мы взяли товары, которые есть в базе, вывели первую страницу с этими товарами. и при выводе, с использованием данного паттерна выводим или не выводим кнопку заказать. с помощью этого же паттерна проверяем доступность на складе для оформления корзины. все находится в одном месте. и когда изменится требование, то изменим только в 1 месте.

т.е. паттерн не подходит для фильтрации (не важно выборки из БД или какого-то готового массива)? и больше направлен на кейсы где нужно управлять свойством товара (в вашем примере возможность заказать)?
источник

NS

Nikita Sklyarov in Laravel Framework Russian Community
Maxyc Webber
» В чём преимущества перед, например, добавлением query scope availableProducts в котором будут определены те же критерии получения продуктов (наличие, статус visible) и при изменении условий мы также изменим только одно место - скоуп.
как вы протестируете скоуп? а что, если у вас появилась новая сущность, не физический товар, а электронный и вы храните его в отдельной таблице? условия к покупке те же. получается будете и в другую модель копировать этот скоуп? а тут просто примените этот паттерн и готово.
протестирую фича-тестом вывод на страницу 🙂
источник

MW

Maxyc Webber in Laravel Framework Russian Community
очень грубо говоря, этот паттерн это вынести набор сложных условий, которые к тому же могут дублироваться в разных местах, в отдельный класс )
источник

AP

Andrey Polyakov in Laravel Framework Russian Community
Хай!

Никто не сталкивался с проблемой:

Class 'Doctrine\DBAL\Driver\PDOPgSql\Driver' not found

Laravel 8.

composer:
    "require": {
       "php": "^7.3|^8.0",
       "doctrine/dbal": "^2.12.1",
       "fideloper/proxy": "^4.4",
       "fruitcake/laravel-cors": "^2.0",
       "guzzlehttp/guzzle": "^7.0.1",
       "laravel/framework": "^8.12",
       "laravel/passport": "^10.0",
       "laravel/tinker": "^2.5"
   },


Делал composer dump-autoload. С третьей версией тоже пробовал. Кто-то знает решение?
источник

ВШ

Виталий Шутов... in Laravel Framework Russian Community
Andrey Polyakov
Хай!

Никто не сталкивался с проблемой:

Class 'Doctrine\DBAL\Driver\PDOPgSql\Driver' not found

Laravel 8.

composer:
    "require": {
       "php": "^7.3|^8.0",
       "doctrine/dbal": "^2.12.1",
       "fideloper/proxy": "^4.4",
       "fruitcake/laravel-cors": "^2.0",
       "guzzlehttp/guzzle": "^7.0.1",
       "laravel/framework": "^8.12",
       "laravel/passport": "^10.0",
       "laravel/tinker": "^2.5"
   },


Делал composer dump-autoload. С третьей версией тоже пробовал. Кто-то знает решение?
А ошибка в каком файле?
источник

AP

Andrey Polyakov in Laravel Framework Russian Community
Миграции
источник

MW

Maxyc Webber in Laravel Framework Russian Community
Может стоит пг установить?)
источник

MW

Maxyc Webber in Laravel Framework Russian Community
Php_pdo_pg
источник

MW

Maxyc Webber in Laravel Framework Russian Community
Не помню как называется модуль
источник

AP

Andrey Polyakov in Laravel Framework Russian Community
Maxyc Webber
Php_pdo_pg
sudo apt-get install php-pgsql - не вытащил
источник

AP

Andrey Polyakov in Laravel Framework Russian Community
Это только когда я пытаюсь изменить колонку

Следовал туториалу)

https://laravel.com/docs/8.x/migrations#modifying-columns
источник

ВШ

Виталий Шутов... in Laravel Framework Russian Community
А в миграции что? Проблема не в том, что библиотека не установлена, а втом что миграция не видит класса
источник

MW

Maxyc Webber in Laravel Framework Russian Community
Вобщем я считаю вам надо поставить модуль пдо пг
источник

ВШ

Виталий Шутов... in Laravel Framework Russian Community
Maxyc Webber
Вобщем я считаю вам надо поставить модуль пдо пг
Это поможет классу найтись? ))))
источник