W tym tygodniu zespół Laravela wydał wersję 11.2, która zawiera pomocnika obsługi fluent(), pomocnika context(), ulepszoną obsługę brakującej bazy danych podczas migrate
operacji i nie tylko.
Fluent Helper
Philo Hermans wniósł fluent()
funkcję pomocniczą podczas pracy z tablicami wielowymiarowymi. Klasa Fluent
jest w frameworku Laravel od dłuższego czasu, jednak to żądanie ściągnięcia wprowadza wygodną metodę pomocnika do tworzenia płynnej instancji obiektu:
$data = [
'user' => [
'name' => 'Philo',
'address' => [
'city' => 'Amsterdam',
'country' => 'Netherlands',
]
],
'posts' => [
[
'title' => 'Post 1',
],
[
'title' => 'Post 2',
]
]
];
collect($data)->get('user');
fluent($data)->user;
collect($data)->get('user')['name'];
fluent($data)->get('user.name');
collect(collect($data)->get('posts'))->pluck('title');
fluent($data)->collect('posts')->pluck('title');
json_encode(collect($data)->get('user')['address']);
fluent($data)->scope('user.address')->toJson();
Pomocnik
kontekstuMichael Nabil współtworzył funkcję pomocnika wygody context()
do zarządzania kontekstem. W zależności od przekazanych argumentów można dodać do kontekstu, pobrać obiekt kontekstu lub pobrać go (z opcjonalną niestandardową wartością domyślną):
// Add user information to the context
context(['user' => auth()->user()]);
// Retrieve the context object
$context = context();
// Retrieve user information from the context
$user = context('user');
// Optional custom default value if not found.
$some_key = context('key_that_does_not_exist', false);
Wartość domyślna dla getterów kontekstuMichael Nabil przyczynił się do obsługi wartości domyślnej w getterach
// Before: Returns null if not found
Context::get('is_user');
Context::getHidden('is_user');
// After: Returns `false` if not found
Context::get('is_user', false); // false
Context::getHidden('is_user', false); // false
Context::get('is_user'); // null
Metody
asercji testu łańcucha zadańGünther Debrauwer i assertHasChain()
assertDoesntHaveChain()
metody:
public function test_job_chains_foo_bar_job(): void
{
$job = new TestJob();
$job->handle();
$job->assertHasChain([
new FooBarJob();
]);
// $job->assertDoesntHaveChain();
}
Lepsza obsługa
tworzenia/czyszczenia bazy danychDries Vints przyczynił się do lepszego przekazywania błędów bazy danych (#50836) podczas uruchamianiamigrate
, gdy baza danych nie została jeszcze utworzona, a także zaktualizowania migrate:fresh
polecenia w celu usprawnienia procesu, gdy baza danych nie istnieje #50838:
Jeśli polecenie zostanie wywołane
migrate:fresh
, gdy nie ma jeszcze utworzonej żadnej bazy danych, zakończy się niepowodzeniem podczas próby wyczyszczenia bazy danych. To żądanie ściągnięcia rozwiązuje ten problem, najpierw sprawdzając, czy tabela migracji istnieje, a jeśli nie, natychmiast przejdź do polecenia migrate, pomijając polecenie db:wipe . Spowoduje to wywołanie przepływu polecenia migracji, a następnie dotarcie do punktu, w którym polecenie poprosi użytkownika o utworzenie bazy danych.W połączeniu z #50836 zapewni to bardziej bezproblemowe doświadczenie dla osób próbujących zainstalować Jetstream za pomocą instalatora Laravela i decydujących się nie tworzyć bazy danych.
Powyższy opis pochodzi z żądania ściągnięcia #50838.
String Trim usuwa niewidoczne znaki
Dasun Tharanga przyczynił się do aktualizacji oprogramowania pośredniczącego frameworkaTrimStrings
, w którym niewidoczne znaki nie są przycinane podczas żądania HTTP, co może powodować problemy podczas przesyłania formularzy. Aby uzyskać szczegółowe informacje, zobacz Pull Request #50832 (Żądanie ściągnięcia #50832).
Informacje o
wydaniu Pełną listę nowych funkcji i aktualizacji można zobaczyć poniżej oraz różnice między wersjami 11.1.0 i 11.2.0 w witrynie GitHub. Poniższe informacje o wydaniu pochodzą bezpośrednio z dziennika zmian:
wersja 11.2.0
- [11.x] Poprawka: aktualizacja
[@param](https://github.com/param)
w bloku dokumentów przez @saMahmoudzadeh w https://github.com/laravel/framework/pull/50827 - [11.x] Poprawka: zaktualizuj @return w niektórych blokach dokumentów , @saMahmoudzadeh w https://github.com/laravel/framework/pull/50826
- [11.x] Napraw pobieranie wygenerowanych kolumn w starszej wersji bazy danych PostgreSQL przez @hafezdivandari w https://github.com/laravel/framework/pull/50834
- [11.x] Przycinanie niewidocznych znaków według @dasundev w https://github.com/laravel/framework/pull/50832
- [11.x] Dodaj wartość domyślną dla
get
igetHidden
wedługContext
@michaelnabil230 w https://github.com/laravel/framework/pull/50824 - [11.x] Ulepszono
serve
dowodzenie rzemieślnikiem o @nunomaduro w https://github.com/laravel/framework/pull/50821 - [11.x] Odśwież hasła użytkowników podczas jednokrotnego logowania przez @axlon w https://github.com/laravel/framework/pull/50843
- [11.x] Nie czyść bazy danych, jeśli nie istnieje przez @driesvints w https://github.com/laravel/framework/pull/50838
- [11.x] Lepsza obsługa błędów tworzenia bazy danych przez @driesvints w https://github.com/laravel/framework/pull/50836
- [11.x] Użyj domyślnej nazwy schematu w SQL Server według @hafezdivandari w https://github.com/laravel/framework/pull/50855
- Poprawne wpisywanie definicji kolumn bazy danych startedAs i virtualAs według @ollieread w https://github.com/laravel/framework/pull/50851
- Zezwalaj na przekazywanie wyrażenia zapytania jako kolumny w relacji wiele-do-wielu według @plumthedev w https://github.com/laravel/framework/pull/50849
- [11.x] Napraw
Middleware::trustHosts(subdomains: true)
przez @axlon w https://github.com/laravel/framework/pull/50877 - [11.x] Modyfikowanie bloków dokumentów dla getGateArguments według @saMahmoudzadeh w https://github.com/laravel/framework/pull/50874
- [11.x] Dodaj
[@throws](https://github.com/throws)
do bloku dokumentów, aby uzyskać metodę rozwiązywania według @saMahmoudzadeh w https://github.com/laravel/framework/pull/50873 - [11.x] Metody przycinania str według @patrickomeara w https://github.com/laravel/framework/pull/50822
- [11.x] Dodaj płynnego pomocnika, @PhiloNL w https://github.com/laravel/framework/pull/50848
- [11.x] Dodawanie nowego pomocnika dla kontekstu według @michaelnabil230 w https://github.com/laravel/framework/pull/50878
- [11.x]
assertChain
orazassertNoChain
w przypadku zadania przez @gdebrauwer w https://github.com/laravel/framework/pull/50858 - [11.x] Usuń zbędne
getDefaultNamespace
metody w niektórych klasach (polecenia class, interface i trait) przez @saMahmoudzadeh w https://github.com/laravel/framework/pull/50880 - [11.x] Usuń nadmiarową implementację elementu ConnectorInterface w programie MariaDbConnector przez @saMahmoudzadeh w https://github.com/laravel/framework/pull/50881
- [11.X] Poprawka: błąd podczas używania
orderByRaw
w zapytaniu przed użyciemcursorPaginate
przez @ngunyimacharia w https://github.com/laravel/framework/pull/50887