Zespół Laravela wydał wersję 10.43 z obsługą przesyłanych strumieniowo odpowiedzi JSON, przekazywaniem nazwy klasy w celu zarejestrowania globalnego zakresu eloquent, nową insertOrIgnoreUsing
metodą Eloquent i nie tylko.
To wydanie zostało oznaczone 30 stycznia, ale dodano kilka doskonałych funkcji, które chcieliśmy podkreślić. Oto, co nowego w najnowszym wydaniu Laravela 10:
Dodano obsługę przesyłanych strumieniowo odpowiedzi
JSONPeter Elmered przyczynił się do StreamedJsonResponse
obsługi tego, co zostało dodane w Symphony 6.3. Korzyścią jest mniejsze zużycie pamięci w przypadku dużych ładunków danych.
Oto przykład użycia go z opisu żądania ściągnięcia:Wraz z streamJson
metodą jest nowy pomocnik testowy do potwierdzania przesyłanej strumieniowo zawartości JSON:
namespace App\Http\Controllers;
use Generator;
use App\Models\User;
class ExampleController extends Controller
{
public function index()
{
return response()->streamJson([
'users' => $this->yieldUsers(),
]);
}
protected function yieldUsers(): Generator
{
foreach (User::query()->cursor() as $user) {
yield $user;
}
}
}
$response->assertStreamedJsonContent([
'data' => [
['id' => 1],
['id' => 2],
['id' => 3],
],
]);
Więcej informacji na temat tej funkcji Symphony można znaleźć w dokumentacji składnika HttpFoundation dotyczącej przesyłania strumieniowego odpowiedzi JSON.
insertOrIgnoreUsing
TrevorMorris przyczynił się do powstania insertOrIgnoreUsing
metody, która "pozwala na zbiorcze wstawianie przy użyciu podwyboru, aby odnieść sukces, jeśli występują konflikty kluczy, w łącznikach, które obsługują funkcję "ignoruj":
$result = $builder->from('table1')->insertOrIgnoreUsing(
['foo'],
function (Builder $query) {
$query->select(['bar'])->from('table2')->where('foreign_id', '=', 5);
}
);
// MySQL:
// insert ignore into `table1` (`foo`) select `bar` from `table2` where `foreign_id` = ?'
// PostgreSQL:
// insert into "table1" ("foo") select "bar" from "table2" where "foreign_id" = ? on conflict do nothing
Nowa metoda
schematu hasIndex()
Hafez Divandari wniósł Schema::hasIndex()
metodę wraz z kilkoma innymi metodami, które mogą być używane w następujący sposób:
Schema::hasIndex('users', 'my_index_name');
Schema::hasIndex('users', ['email']);
Schema::hasIndex('users', ['email'], 'unique');
Schema::hasIndex('users', ['id'], 'primary');
Schema::hasIndex('users', ['name', 'title'], 'fulltext');
Schema::getTableListing(); // string[]
Schema::getIndexListing('users'); // string[]
Użyj nazw klas podczas dodawania zakresów
globalnychEliezer Margareten przyczynił się do przekazania nazwy klasy zakresu podczas dodawania zakresu globalnego do modelu:Oprócz tej aktualizacji Eliezer wniósł addGlobalScopes()
metodę, która pozwala zarejestrować kilka globalnych zakresów jednocześnie:Nowe storage:unlink
polecenie rzemieślnikaMichaił Salkow dodał nowe polecenie
/**
* The "booted" method of the model.
*/
protected static function booted(): void
{
static::addGlobalScope(AncientScope::class);
}
Artisan, które usuwa wszystkie dowiązania symboliczne:
/**
* The "booted" method of the model.
*/
protected static function booted(): void
{
static::addGlobalScopes([FirstScope::class, SecondScope::class]);
}
php artisan storage:unlink
Informacje o
wydaniu Poniżej znajduje się pełna lista nowych funkcji i aktualizacji oraz różnica między wersjami 10.42.0 i 10.43.0 w serwisie GitHub. Poniższe informacje o wydaniu pochodzą bezpośrednio z dziennika zmian:
v10.43.0
- [10.x] Dodaj pamięć:odłącz polecenie przez @salkovmx w https://github.com/laravel/framework/pull/49795
- [10.x] Ujednolicenie
\Illuminate\Log\LogManager
komentarzy definicji metody za pomocą\Psr\Logger\Interface
funkcji według @eusonlito w https://github.com/laravel/framework/pull/49805 - [10.x] argument ciągu nazw klas dla zakresów globalnych według @emargareten w https://github.com/laravel/framework/pull/49802
- [10.x] Dodawanie
hasIndex()
i drobne ulepszenia schematu przez @hafezdivandari w https://github.com/laravel/framework/pull/49796 - [10.x] Nie dotykaj
BelongsToMany
relacji podczas używaniawithoutTouching
przez @mateusjunges w https://github.com/laravel/framework/pull/49798 - [10.x] Sprawdzanie, czy właściwości elementów pocztowych są inicjowane przed udostępnieniem w widoku przez @j3j5 w https://github.com/laravel/framework/pull/49813
- [10.x] Usuń zduplikowane akcje/wyewidencjonowanie z przepływu pracy kolejki, @Jubeki w https://github.com/laravel/framework/pull/49828
- [10.x] Dodaj
insertOrIgnoreUsing
dla Eloquent by @trovster w https://github.com/laravel/framework/pull/49827 - [10.x] Uwrażliwianie
hasIndex()
na zamówienia przez @hafezdivandari w https://github.com/laravel/framework/pull/49840 - [10.x] Zwolnij akcję @driesvints w https://github.com/laravel/framework/pull/49838
- [10.x] Dodaj MariaDb1060Platform przez @driesvints w https://github.com/laravel/framework/pull/49848
- [10.x] Ujednolicony blok
$guarded
dokumentów przestawnych i modeli według @eusonlito w https://github.com/laravel/framework/pull/49851 - [10.x] Wprowadzenie
beforeStartingTransaction
wywołania zwrotnego i używanie go wLazilyRefreshDatabase
@pascalbaljet w https://github.com/laravel/framework/pull/49853 - [10.x] Napraw komunikat o maksymalnej weryfikacji hasła przez @MrPunyapal w https://github.com/laravel/framework/pull/49861
- [10.x] Napraw komunikat sprawdzania poprawności używany dla maksymalnego rozmiaru pliku według @mateusjunges w https://github.com/laravel/framework/pull/49879
- Zaktualizuj README.md przez @foremtehan w https://github.com/laravel/framework/pull/49878
- [10.x] Dodaje
FormRequest[@getRules](https://github.com/getRules)()
metodę według @cosmastech w https://github.com/laravel/framework/pull/49860 - [10.x] dodaj metodę addGlobalScopes przez @emargareten w https://github.com/laravel/framework/pull/49880
- [10.x] Zezwól na brick/math 0.12 przez @LogicSatinn w https://github.com/laravel/framework/pull/49883
- [10.x] Dodawanie obsługi przesyłanej strumieniowo odpowiedzi JSON przez @pelmered w https://github.com/laravel/framework/pull/49873
- [10.x] Używanie natywnego wyjątku fopen w LockableFile.php przez @eusonlito w https://github.com/laravel/framework/pull/49895
- [10.x] Napraw LazilyRefreshDatabase podczas testowania poleceń rzemieślnika przez @iamgergo w https://github.com/laravel/framework/pull/49914
- [10.x] Naprawianie wyrażeń w funkcjach with-functions wykonujących agregacje według @tpetry w https://github.com/laravel/framework/pull/49912
- [10.x] Rozwiązano problem z wpisami tagów redis, które nigdy nie stają się nieaktualne, jeśli czas wygaśnięcia pamięci podręcznej jest czasem przeszłym przez @jagers w https://github.com/laravel/framework/pull/49864
- [10.x] Poprawka — może
Translator
niepoprawnie zgłaszać ustawienia regionalne brakującego klucza tłumaczenia przez @VicGUTT w https://github.com/laravel/framework/pull/49900 - [10.x] poprawka reguł walidacji przed/po przez @MrPunyapal w https://github.com/laravel/framework/pull/49871