Repository navigation
6.0.1
Патч к 6.0. Обновление ничего не ломает, менять код не нужно.
Пустой ключ — это null, а null не индекс массива
Пустая колонка читается как null, а PHP 8.5 объявил использование null в качестве индекса массива устаревшим. Загрузчик связей брал $byKey[$row->attr[$localKey] ?? null], поэтому строка с
незаполненным ключом — сообщение от гостя, запись без владельца, что угодно с пустой колонкой — давала предупреждение на каждое чтение связи:
Deprecated: Using null as an array offset is deprecated, use an empty string instead
in .../src/RelationLoader.php on line 76
null не совпадает ни с чем, и ровно это такая строка и получала раньше: пустой hasOne, пустую коллекцию в остальных случаях. Теперь она не участвует в поиске, вместо того чтобы искаться по
null:
$localId = $row->attr[$relation->localKey] ?? null;
$found = $localId === null ? null : ($byKey[$localId] ?? null);Закрыты все четыре места, а не только то, на которое указывало предупреждение: та же ошибка была на стороне связанных записей и дважды в hasManyThrough — при сборке промежуточной таблицы и при
выборке по ней.
Поведение связей не изменилось, изменилось только отсутствие предупреждений.