Команда Laravel выпустила версию 10.4 с методом File::json(), преобразовав существующие отношения HasMany в отношение HasOne, новое утверждение тестового ответа и многое другое.
Метод
File::json()Остин Уайт внес File::json()
свой вклад в метод для удобства получения данных в кодировке JSON из файла:
// Before
$contents = File::get('sample.json');
$data = json_decode($contents, true);
// After
$data = File::json('sample.json');
Assert неподдерживаемый тип
носителяШамимул Алам внес вспомогательный элемент утверждения для 415 Unsupported Media Type
кода состояния ответа:
$response->assertUnsupportedMediaType();
Преобразование существующего отношения
HasMany в HasOneЛюк Кузьмиш внес свой вклад в преобразование HasMany в HasOne и MorphMany в MorphOne
Возьмем этот пример необходимости определения двух отношений:
class User extends Model
{
public function logins(): HasMany {
return $this->hasMany(Login::class, 'some_id', 'the_other_id');
}
public function latestLogin(): HasOne {
return $this->hasOne(Login::class, 'some_id', 'the_other_id')->latestOfMany();
}
}
С помощью этого PR теперь вы можете сделать следующее с помощью ->one()
метода:
class User extends Model
{
public function logins(): HasMany {
return $this->hasMany(Login::class, 'some_id', 'the_other_id');
}
public function latestLogin(): HasOne {
return $this->logins()->one()->latestOfMany();
}
}
Метод one()
доступен на HasMany
, HasManyThrough
и MorphMany
.
Создание макросного метода для paginationInformation
Frans Slabbekoorn способствовало возможности определения макроса, paginationInformation
который позволяет настраивать информацию о разбивке на страницы без необходимости расширения всех ресурсов в качестве базового ресурса:
/** @mixin \Illuminate\Http\Resources\Json\ResourceCollection */
class ResourceCollectionMixin
{
public function paginationInformation(): Closure
{
return fn ($request, $paginated, $default) => collect($default)->mapWithKeysRecursively(fn ($item, $key) => [Str::camel($key) => $item])->toArray();
}
}
Примечания
к выпуску Вы можете увидеть полный список новых функций и обновлений ниже и разницу между 10.3.0 и 10.4.0 на GitHub. Следующие примечания к выпуску взяты непосредственно из журнала изменений:
v10.4.0
Добавлено Illuminate/Testing/Concerns/AssertsStatusCodes::assertUnsupportedMediaType()
- Добавлено
Illuminate/Testing/Concerns/AssertsStatusCodes::assertUnsupportedMediaType()
Illuminate/Testing/Concerns/AssertsStatusCodes::assertUnsupportedMediaType()
(#46426) - Добавлено
Illuminate/Testing/Concerns/AssertsStatusCodes::assertUnsupportedMediaType()
curl_error_code: 77 to DetectsLostConnections (#46429) - Разрешить преобразование HasMany в HasOne && MorphMany в MorphOne (#46443)
- Добавить опцию для создания макросного метода для пагининформации (#46461)
- Добавлено
Illuminate/Testing/Concerns/AssertsStatusCodes::assertUnsupportedMediaType()
Illuminate/Filesystem/Filesystem::json()
(#46481)
Исправлено
- Исправление проанализированных входных аргументов для событий команд с помощью перемаршрутизации диспетчера (#46442)
- Исправление использования перечислений с необязательными неявными параметрами (#46483)
- Исправление устареваний для встроенных изображений в почтовой программе Symfony (#46488)
Изменено
- Добавлено
Illuminate/Testing/Concerns/AssertsStatusCodes::assertUnsupportedMediaType()
alternative database port in Postgres DSN (#46403) - Разрешить вызов getControllerClass на маршрутах на основе закрытия (#46411)
- Удалить устаревшие method_exists(ReflectionClass::class, 'isEnum') вызов ( #46445)
- Преобразование красноречивого строителя в базовый конструктор в whereExists (#46460)
- Рефакторинг общего статического методаExcludedByOptions метод для черты (#46498)