Есть модель, наследующая activeRecord и построенная на основании View.
Вьюха, в свою очередь, left-джойнит две таблицы, и таким образом ключевого поля в чистом виде в ней нет, формируется поле item_id на основании двух полей из разных таблиц, и получается что-то вида "xxxxx.yyy", где xxxx - значение поля 'F1' из первой таблицы, а yyy - поля F2 из второй.
Поиск по вьюхе вида "where item_id = 'xxxx.yyy'" нежизнеспособен при большом количестве записей (а их будет реально много), т.к. не использует ключи. Нужно заменять его на WHERE F1 = 'xxxx' AND F2 = 'yyy'.
Конечно, можно везде, где нужен поиск по item_id, использовать такую конструкцию, но это несколько громоздко, и не факт, что кто-то другой не использует привычный findOne('xxxx.yyy') и не заставит базу надолго призадуматься.
В чем состоит вопрос: есть ли изящный способ переопределять WHERE такого рода для всех возможных случаев (findOne, where, andWhere, orWhere etc) в одном месте, чтобы код оставался в привычном виде и всё было прозрачно?
Переопределение условий Where для отдельной модели
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Переопределение условий Where для отдельной модели
Свой ActiveQuery.
Нравится Yii? Давайте сделаем его лучше!.
Re: Переопределение условий Where для отдельной модели
При том, что это избыточные действия. Переопределю пару методов, да и все
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Переопределение условий Where для отдельной модели
ОК. Если получится сделать универсально — закиньте на GitHub issue с рефакторингом. Спасибо.
Нравится Yii? Давайте сделаем его лучше!.