• Czas czytania ~5 min
  • 11.02.2024

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

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297