Найден 101 результат

i-programmer
2024.01.30, 11:13
Форум: Общие вопросы (Yii 2.x)
Тема: Откуда берётся неймспейс app и как он работает?
Ответы: 3
Просмотры: 1206

Re: Откуда берётся неймспейс app и как он работает?

Доброго времени суток. Я бы посоветовал глянуть каким образом библиотеки с отличным нэймспейсом от app/ подключаются в Yii2, внутри vendor. Ведь вы можете создать любой неймспейс для своей библиотеки. Если в базовой версии идёт (или раньше шло) все от app/, то в продвинутой версии другие нэймспейсы...
i-programmer
2024.01.11, 21:41
Форум: Общие вопросы (Yii 2.x)
Тема: Откуда берётся неймспейс app и как он работает?
Ответы: 3
Просмотры: 1206

Re: Откуда берётся неймспейс app и как он работает?

В целом нашёл ответ подебажив. В index.php подключается Yii.php , который загружает файлы и в том числе вызывает метод autoload базового класса BaseYii . Он выболяет такую строку: public static function autoload($className) { ... $classFile = static::getAlias('@' . str_replace('\\', '/', $className)...
i-programmer
2024.01.11, 20:54
Форум: Общие вопросы (Yii 2.x)
Тема: Откуда берётся неймспейс app и как он работает?
Ответы: 3
Просмотры: 1206

Откуда берётся неймспейс app и как он работает?

Я знаю в целом как работают наймспейсы, знаю как работать с composer и psr-4, знаю как работает автозагрузка. То есть заранее спасибо, пожалуйста, пожелания "почитай документацию" не пишите. Вопрос такой: у фреймворка в composer.json не прописано строк в виде "autoload": { "...
i-programmer
2023.10.26, 19:59
Форум: Общие вопросы (Yii 2.x)
Тема: Как победить malformed array literal (запрос к БД с колонкой типа ARRAY)
Ответы: 0
Просмотры: 1246

Как победить malformed array literal (запрос к БД с колонкой типа ARRAY)

Имеется Postgres 15.3. В таблице есть колонка user_ids с типом text[] В запросе может прийти массив как с одним значением, так и несколькими. Когда пытаешься писать запрос вида $jobList = Job::find()->select('id')->where(['in', 'user_ids', $data]); то появляется ошибка с текстом: malformed array lit...
i-programmer
2023.07.16, 22:10
Форум: Общие вопросы (Yii 2.x)
Тема: Можно ли не делать Rollback для транзакций при выбросе исключений?
Ответы: 6
Просмотры: 2269

Re: Можно ли не делать Rollback для транзакций при выбросе исключений?

В каком случае нарушится идемпотентность? Если есть конкурентные запросы, например, повторные запросы в случае с сетевыми ошибками. В случае какой-то сетевой ошибки клиент предполагает, что запрос до сервера не дошел и отправляя второй запрос, клиент ожидает получить или ошибку валидации или успешн...
i-programmer
2023.07.16, 21:02
Форум: Общие вопросы (Yii 2.x)
Тема: Можно ли не делать Rollback для транзакций при выбросе исключений?
Ответы: 6
Просмотры: 2269

Re: Можно ли не делать Rollback для транзакций при выбросе исключений?

При завершении выполнения скрипта, разрывается существующее соединение с БД. MySQL автоматически откатывает транзакции, которые не были закомичены. Подводные камни. 1. Если не перехватывать исключения, пользователи сайта будут видеть 500. Хорошая практика перехватывать исключения, логировать|игнори...
i-programmer
2023.07.16, 18:19
Форум: Общие вопросы (Yii 2.x)
Тема: Можно ли не делать Rollback для транзакций при выбросе исключений?
Ответы: 6
Просмотры: 2269

Можно ли не делать Rollback для транзакций при выбросе исключений?

Миллион примеров в интернете описывают всегда один сценарий использования $transaction = $connection->beginTransaction(); try { // тут много действий с БД // ещё один запрос // ещё один $transaction->commit(); } catch(Exception $e) { $transaction->rollback(); } Я знаю, что PHP сделан таким образом, ...
i-programmer
2023.07.16, 10:26
Форум: Общие вопросы (Yii 2.x)
Тема: Плохая ли практика оборачивать всю операцию (экшн) в транзакцию?
Ответы: 2
Просмотры: 2159

Плохая ли практика оборачивать всю операцию (экшн) в транзакцию?

На работе коллега, чтобы не заморачиваться, в beforeAction написал так: public function beforeAction($action): bool { $transaction = Yii::$app->db->beginTransaction(); $this->on(self::EVENT_AFTER_ACTION, [$transaction, 'commit']); return parent::beforeAction($action); } Т.е. до экшна начать транзакц...
i-programmer
2022.05.25, 10:40
Форум: Общие вопросы (Yii 2.x)
Тема: Можно ли вызвать функции работы с конкретно БД (например pg_copy_from) ?
Ответы: 2
Просмотры: 2380

Re: Можно ли вызвать функции работы с конкретно БД (например pg_copy_from) ?

SiZE писал(а): 2022.05.23, 09:38 Вроде бы должно как-то так сработать

Yii::$app->db->pdo->pgsqlCopyFromArray(...)
да, тоже это смог найти)) спасибо)
i-programmer
2022.05.20, 11:20
Форум: Общие вопросы (Yii 2.x)
Тема: Можно ли вызвать функции работы с конкретно БД (например pg_copy_from) ?
Ответы: 2
Просмотры: 2380

Можно ли вызвать функции работы с конкретно БД (например pg_copy_from) ?

Есть функция работы с постгресом: pg_copy_from. Сейчас я делаю всё, как в документации PHP: $db = pg_connect("host=localhost user=user password=123 dbname=test") or die("Could not connect"); $result = pg_copy_from($db, 'public.my_table (id, test_id,lock_name,func_type)', $data, '...
i-programmer
2022.04.28, 20:58
Форум: Общие вопросы (Yii 2.x)
Тема: Как задать дефолтные значения для AR при создании объекта?
Ответы: 11
Просмотры: 2922

Re: Как задать дефолтные значения для AR при создании объекта?

Да, но он из коробки не заполняет дефолтными данными модель. Для каких целей вам нужно заполнять дефолтными данными модель? Что вы хотите сделать с дефолтными значениями? Если ничего, то пусть БД сама заполняет эти данные в саму же себя. Зачем сюда ещё фреймворк приплетать? Ну вот вам как минимум о...
i-programmer
2022.04.27, 14:43
Форум: Общие вопросы (Yii 2.x)
Тема: Как задать дефолтные значения для AR при создании объекта?
Ответы: 11
Просмотры: 2922

Re: Как задать дефолтные значения для AR при создании объекта?

ИМХО проще было сделать сразу заполнение дефолтными значениями при `new Model`; Как раз при вызове new Model() конструктор вызывает метод init() Да, но он из коробки не заполняет дефолтными данными модель. Я написал о том, что "почему бы этого не сделать было во фреймворке изначально?" Чт...
i-programmer
2022.04.27, 12:00
Форум: Общие вопросы (Yii 2.x)
Тема: Как задать дефолтные значения для AR при создании объекта?
Ответы: 11
Просмотры: 2922

Re: Как задать дефолтные значения для AR при создании объекта?

В том варианте когда модель по сути через форму создается/редактируется, то вот эти default правила могут в принципе решить проблему дефолтных значений, т.к. всегда через валидацию будет проходить. Т.е. получается, если используется форма - обязательно валидация и следовательно будет работать запол...
i-programmer
2022.04.27, 08:15
Форум: Общие вопросы (Yii 2.x)
Тема: Как задать дефолтные значения для AR при создании объекта?
Ответы: 11
Просмотры: 2922

Re: Как задать дефолтные значения для AR при создании объекта?

Нужно в схеме БД указывать дефолтные значения. Чтобы если например из phpmyadmin и т.д. создал в ручную, тоже работало. Соответственно и ->loadDefaultValues их подгрузит без дублирования. А в rules - то о несколько другом, то о форме, если ничего не введено в форме, то подставит их. Я тогда не пони...
i-programmer
2022.04.25, 15:19
Форум: Общие вопросы (Yii 2.x)
Тема: Как задать дефолтные значения для AR при создании объекта?
Ответы: 11
Просмотры: 2922

Re: Как задать дефолтные значения для AR при создании объекта?

public function init() { parent::init(); $this->k = 1; $this->v = 2; } Так же есть метод loadDefaultValues loadDefaultValues - это чтобы из БД загрузить дефолтные данные в модель. Но нет, наверное, особого смысла дублировать в коде и в БД одно и то же, поэтому используем указание дефолтных значений...
i-programmer
2022.04.22, 16:13
Форум: Общие вопросы (Yii 2.x)
Тема: Как задать дефолтные значения для AR при создании объекта?
Ответы: 11
Просмотры: 2922

Как задать дефолтные значения для AR при создании объекта?

Если в AR модели в rules прописать строки [['k'], 'default', 'value' => 123], [['v'], 'default', 'value' => '666'], То только лишь при вызове метода validate() у модели, дефолтные значения указанных полей запишутся в объект. А как сделать так, чтобы они записывались без вызова этого метода, т.е. сра...
i-programmer
2022.04.07, 08:06
Форум: Архитектура, дизайн, ООП
Тема: DDD как орагнизовать валидацию. Как возвращать значения из handler?
Ответы: 7
Просмотры: 12426

Re: DDD как орагнизовать валидацию. Как возвращать значения из handler?

Я думал просто, что и command и handler всегда возвращают исключительно void. Если я не прав, пожалуйста поправьте. Если мы запускаем команду сразу, то да, можно вернуть идентификаторы из обработчика. В простейшем случае такое сработает. Но в более сложных модульных или микросервисных проектах кома...
i-programmer
2022.04.06, 21:30
Форум: Архитектура, дизайн, ООП
Тема: DDD как орагнизовать валидацию. Как возвращать значения из handler?
Ответы: 7
Просмотры: 12426

Re: DDD как орагнизовать валидацию. Как возвращать значения из handler?

А что где и как надо делать, чтобы вернуть что-то клиенту? Например надо данные по отчёту. Команды нужны только для операций на изменение. А для отображения данных нужны отдельные запросы. Но ведь в запросах на изменение нам тоже иногда нужно отдать какой-то результат. Например у меня есть операция...
i-programmer
2022.04.05, 19:13
Форум: Архитектура, дизайн, ООП
Тема: DDD как орагнизовать валидацию. Как возвращать значения из handler?
Ответы: 7
Просмотры: 12426

DDD как орагнизовать валидацию. Как возвращать значения из handler?

В этом топике https://yiiframework.ru/forum/viewtopic.php?p=188542#p188542 показано было что команда, по сути - это dto, а handler - сервис. Я вижу что команда имеет метод execute а хэндлеры - handle . Все они работают по паттерну "Команда", как я понимаю, а значит ничего не должны возвращ...
i-programmer
2021.09.26, 10:21
Форум: Общие вопросы (Yii 2.x)
Тема: Почему вынесение переменной за pjax влияет на работу DatePicker?
Ответы: 2
Просмотры: 1043

Re: Почему вынесение переменной за pjax влияет на работу DatePicker?

Скорее всего нажатие по кнопкам привязывается к конкретным айдишникам, а при каждом запросе они генерятся новые. Дело в том, что после перерисовки таблицы, если в консоли браузера выполнить код $('#w0-kvdate').kvDatepicker(window.kvDatepicker_33d8ead7); то пикер будет опять работать, после выбора д...