Param - это геттер, рассчитывающий значение на основе полей модели без запроса в БД.
select() работает только с полями БД.
with() добавляет к выборке только настоящие relation.
Переписывать функцию fields() можно, но тогда во всех выборках модели будут возвращаться описанные там поля, без возможности управления ими.
Есть вариант после выборки пройтись foreach по всем записям и вручную указать, какие поля нужны, но это некрасиво. Вдобавок, экшен у меня не простой, а MyAction extends Action, что позволяет настраивать его с помощью дополнительных параметров, но не позволяет хардкодить.
Arkham, да читал я доки, и в исходниках копался, и разные варианты пробовал. Вот думаю, что я пропустил. Пока что у меня получилось реализовать задачу через манипуляцию fields(), но решение выглядит корявым. Вот я и спрашиваю, как сделать красиво. Вы же кидаете ссылку на официальные доки и пишете решение, не вдаваясь в особенности фреймворка.
Виталий Першин, доработок полно: новая версия фреймворка и часть кода переписана под новую версию php. БД тоже другая потому что версия более новая. Плюсом, на 1.1.1.1 постоянно ведется разработка и на 2.2.2.2 приходится постоянно подтягивать код в новую ветку git'а и проверять его работоспособность.
Что-то мне подсказывает, что при каждом изменении (первый change) значения инпута навешивать еще один обработчик изменения на один конкретный инпут (второй change) - не самая здравая идея. Может, поменять первый change на click, а второй вообще убрать?
Дмитрий, 8.5.21.
Кажись, я догадался. Прошу прощения, не указал важную, как оказалось особенность: functionToTest() я объявил статической. Переписал все на обычные методы - заработало.
1. На самом деле передаю, но в данном случае это не важно.
2. Получаю ошибку
[PHPUnit\Framework\Warning] Trying to configure method "getExternalData1" which cannot be configured because it does not exist, has not been specified, is final, or is static
Могу предположить, не видя кода, что каждый раз создается разное имя класса какого-либо контейнера, который вы каждый раз копируете вручную.
А вообще, проверьте, что у вас в
Скорее всего, вам нужно наследование, как и указал humoured в комменте к своему ответу. Если же вам нужны 4 класса, отличающихся ТОЛЬКО именем, то вам НЕ НУЖНЫ 4 класса.
Так и вложенность сохраняется, и код получается рабочим. А как быть с геттерами?