Comments 15
Статья о том, что в php есть наследование?
+1
> User::find()->where([User::ATTR_ID => $userid,])
В Yii2 можно юзать ActiveRecord::primaryKey()
https://github.com/yiisoft/yii2/blob/master/framework/db/ActiveRecord.php#L318
В Yii2 можно юзать ActiveRecord::primaryKey()
https://github.com/yiisoft/yii2/blob/master/framework/db/ActiveRecord.php#L318
+2
простите… вы о чем? User::find()->where([User::ATTR_АБЫРВЛАГ=> $userАбырвлаг,])
просто я не заметил, где я в своем посте предложил соревноваться в знании фрейморка.
просто я не заметил, где я в своем посте предложил соревноваться в знании фрейморка.
-4
Вы излишне агрессивны.
Вы поделились кусочком совего знания (предложили посоревноваться в знании PG, ага), я поделился кусочком своих знаний.
Имелось ввиду, что можно использовать существующую функциональность и не вносить дублирование кода.
> User::find()->where([User::primaryKey() => $userid])
Подсветки, ессесн, нет, спасибо НЛО.
Аривидерчи, Влад.
Вы поделились кусочком совего знания (предложили посоревноваться в знании PG, ага), я поделился кусочком своих знаний.
Имелось ввиду, что можно использовать существующую функциональность и не вносить дублирование кода.
> User::find()->where([User::primaryKey() => $userid])
Подсветки, ессесн, нет, спасибо НЛО.
Аривидерчи, Влад.
+1
но я вам все-таки отвечу почему не PK. Дело в том, что в IDE есть такая штука как Find Usage. Дальше можете подумать сами.
-6
А в каких случаях может возникнуть ситуация, когда запрос надо направить именно в мастер?
+1
например, когда вы сделали INSERT и вам сразу же надо узнать состояние таблицы т.к. у вас нет гарантии, что INSERT сделали только вы. Это, конечно, абстрактно.
0
ну, или пример из практики:
Приходит звонок в коллцентр, записывается запись в мастер и ставится в кеш ключ, что для такого-то оператора есть звонок c некоторым ID.
У оператора в рабочем месте AJAX постоянно опрашивает сервер, есть ли для него звонки? Когда он получает ключ, что звонок есть, он пытается подгрузить карточку этого звонка, делая SELECT. У PGPool очень небольшой лаг синхронизации, но иногда возникает ситуация, что ID того звонка, который закоммитился в мастер еще нет в SLAVE базе.
Таких примеров можно привести много.
Приходит звонок в коллцентр, записывается запись в мастер и ставится в кеш ключ, что для такого-то оператора есть звонок c некоторым ID.
У оператора в рабочем месте AJAX постоянно опрашивает сервер, есть ли для него звонки? Когда он получает ключ, что звонок есть, он пытается подгрузить карточку этого звонка, делая SELECT. У PGPool очень небольшой лаг синхронизации, но иногда возникает ситуация, что ID того звонка, который закоммитился в мастер еще нет в SLAVE базе.
Таких примеров можно привести много.
+1
Не проще ли в этом случае в кэш записывать не только ID звонка, но все данные о звонке сразу? В этом случае клиент не будет делать два запроса в случае если новый звонок появился, да и SELECT в мастер не понадобится по идее. Плюс, не нужно будет делать кэш персистентным (иначе придется что-то думать на случай потери кэша).
0
Я вам описал частный случай, который, конечно, не совершенен и просто показывает общую картину. Мы эту реализацию в рамках данного поста лучше не будем обсуждать — у меня есть пара мыслей о статьях на тему Asterisk + Yii2.
Если хотите, я приведу примеры не из моих модулей, где это критично, но завтра.
Если хотите, я приведу примеры не из моих модулей, где это критично, но завтра.
0
И, очень хочется, чтобы разработчики Yii все-таки как-то это сделали «внутри» из коробки.
Что именно? Полную поддержку PGPool в ActiveRecord, который должен прозрачно работать не только с Postgres но и со многими другими БД?
Мне кажется, таких вещей, как noBalance()
, который работает только для Postgres и только для PGPool в ActiveRecord во фреймворках лучше не реализовывать вообще.
+1
Sign up to leave a comment.
Работа с PGPool + ORM Yii2