Забезпечення узгодженості атрибутів під час створення зв'язків у Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 05 квітня, 2025
Хочете дізнатися, як метод `withAttributes` у Laravel підвищує цілісність зв'язків між моделями? У цій статті ми розглянемо, як цього можна досягти, автоматично застосовуючи обмеження атрибутів під час створення нових моделей

Метод withAttributes в Laravel підвищує цілісність зв'язків, автоматично застосовуючи атрибути обмеження під час створення моделей через методи зв'язків

Основна реалізація забезпечує узгодженість атрибутів:

class User extends Model
{
    // Основний зв'язок
    public function posts(): HasMany
    {
        return $this->hasMany(Post::class);
    }

    // Обмежений зв'язок з використанням withAttributes
    public function featuredPosts(): HasMany
    {
        return $this->posts()
            ->where('featured', true)
            ->withAttributes(['featured' => true]);
    }
}

Цей підхід є особливо корисним у системах електронної комерції:

class Store extends Model
{
    public function products(): HasMany
    {
        return $this->hasMany(Product::class);
    }

    // Активні продукти з гарантованим статусом
    public function activeProducts(): HasMany
    {
        return $this->products()
            ->where('active', true)
            ->withAttributes(['active' => true]);
    }

    // Промоційні продукти з постійними атрибутами
    public function promotionalProducts(): HasMany
    {
        return $this->products()
            ->where('on_sale', true)
            ->withAttributes([
                'on_sale' => true,
                'promotion_started_at' => now()
            ]);
    }
}

Коли моделі створюються через ці зв'язки, вказані атрибути автоматично застосовуються:

// Створення через обмежений зв'язок
$newProduct = $store->promotionalProducts()->create([
    'name' => 'Літня пропозиція',
    'price' => 29.99
]);

echo $newProduct->on_sale; // true
echo $newProduct->promotion_started_at; // поточна дата та час

Метод withAttributes забезпечує узгодженість вашої моделі даних, навіть коли нові записи створюються через фільтровані методи зв'язків

Популярні

Logomark Logotype

Журнал аудиту в Laravel

Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту

Logomark Logotype

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше

Logomark Logotype

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!