Laravel надає касти AsArrayObject та AsCollection для ефективної роботи з комплексними JSON-атрибутами, що дозволяє інтуїтивно маніпулювати вкладеними структурами даних.
<?php
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
use Illuminate\Database\Eloquent\Casts\AsCollection;
class User extends Model
{
protected $casts = [
'settings' => AsArrayObject::class,
'tags' => AsCollection::class
];
}
Розгляньмо повний приклад моделі Product, яка використовує JSON-атрибути для управління специфікаціями та варіантами:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
use Illuminate\Database\Eloquent\Casts\AsCollection;
class Product extends Model
{
protected $fillable = ['name', 'specs', 'variants'];
protected $casts = [
'specs' => AsArrayObject::class,
'variants' => AsCollection::class,
];
}
// Міграція для цієї моделі виглядатиме так:
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->json('specs');
$table->json('variants');
$table->timestamps();
});
}
// Приклад використання:
$product = Product::create([
'name' => 'Ігровий ноутбук',
'specs' => [
'процесор' => 'Intel i7',
'оперативна пам’ять' => '16GB',
'сховище' => [
'основне' => '512GB SSD',
'додаткове' => '1TB HDD'
]
],
'variants' => [
['color' => 'Чорний', 'price' => 999],
['color' => 'Сріблястий', 'price' => 1099]
]
]);
// Оновлюємо вкладені специфікації без жодних PHP помилок
$product->specs['сховище']['основне'] = '1TB SSD';
$product->save();
// Використовуємо методи колекцій для варіантів
$product->variants->push(['color' => 'Червоний', 'price' => 1199]);
$product->save();
// Фільтруємо варіанти за допомогою методів колекцій
$expensiveVariants = $product->variants->where('price', '>', 1000);
Ці касти забезпечують безперебійну роботу з JSON-даними, зберігаючи при цьому чистоту та легкість підтримки коду. AsArrayObject надає доступ, подібний до масиву, тоді як AsCollection відкриває можливості потужних методів колекцій Laravel
У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту
Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel
Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту