Skip to content

Version 5.4.0

Choose a tag to compare

@visavi visavi released this 28 Aug 14:33
· 5 commits to master since this release

Модель называет класс, в который читаются её строки

Запись держит значения строки, поэтому всё, что строка таблицы умеет
отвечать, принадлежит записи. Класс написать было можно, а вернуть из
запроса нельзя: Query создавал Record по имени класса, записанному руками
в пяти местах, и наследник нигде не появлялся.

Model::$record называет класс, newRecord() его создаёт, recordClass()
отдаёт имя. Запрос спрашивает модель везде, где делает запись: find(),
first(), get(), cursor(), create() и связь, никого не нашедшая. Имя, не
являющееся Record, выбрасывает UnexpectedValueException.

Класс проверяется один раз на модель: результат читается одним и тем же
классом, а проверка на строку стоила бы поиска на строку. Модель, ничего
не назвавшая, читается в Record, как раньше.

Багфикс (src/Collection.php, tests/CollectionTest.php):

pluck() больше не теряет записи с пустой колонкой

array_column() над объектами спрашивает у них __isset(), а он для null
отвечает false, поэтому строка с пустым значением выпадала из результата
целиком — вместе со своим ключом. Таблица настроек из 43 строк, где одно
значение пустое, давала 42 ключа, и чтение недостающего роняло вызвавший
код.

Значения читаются обходом: пустая колонка — колонка тоже, и запись
остаётся на своём месте со значением null. Массивы, которые тоже кладут
в коллекцию, читаются по-прежнему.