Спрощення зв'язків HasManyThrough за допомогою підтримки CanBeOneOfMany у Laravel

Перекладено ШІ 6 Laravel News 26 червня, 2026

Laravel нещодавно додав нову функцію CanBeOneOfMany для Eloquent ORM, яка значно спрощує отримання окремих моделей з HasManyThrough відносин. Ця стаття розкриває, як використовувати ці нові можливості для покращення структури та читабельності вашого коду — дізнайтеся, як легко отримати останні, найстаріші або спеціально відфільтровані записи

Laravel покращує свій Eloquent ORM, додаючи підтримку CanBeOneOfMany для відносин HasManyThrough. Ця функція дозволяє розробникам елегантно отримувати окрему модель з відносини HasManyThrough, використовуючи чіткий та виразний синтаксис для отримання останніх, перших або налаштованих записів.

Eloquent вже забезпечував потужні інструменти для роботи з комплексними відносинами. Завдяки підтримці CanBeOneOfMany, ви тепер можете отримувати окрему модель з відносини HasManyThrough, спираючись на різні критерії:

namespace App\Models;
 
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOneThrough;
 
class Customer extends Model
{
    /**
     * Отримати найновіше замовлення для клієнта.
     */
    public function latestOrder(): HasOneThrough
    {
        return $this->orders()->one()->latestOfMany();
    }
}

Ця функція особливо корисна для доступу до конкретних записів з великих наборів відносин:

namespace App\Models;
 
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOneThrough;
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
 
class Department extends Model
{
    /**
     * Отримати всі завдання для відділу.
     */
    public function tasks(): HasManyThrough
    {
        return $this->hasManyThrough(
            Task::class,
            Employee::class,
            'department_id',
            'employee_id'
        );
    }
 
    /**
     * Отримати найновіше завдання для відділу.
     */
    public function latestTask(): HasOneThrough
    {
        return $this->tasks()->one()->latestOfMany();
    }
 
    /**
     * Отримати найперше створене завдання для відділу.
     */
    public function firstTask(): HasOneThrough
    {
        return $this->tasks()->one()->oldestOfMany();
    }
 
    /**
     * Отримати найвищий пріоритет завдання для відділу.
     */
    public function criticalTask(): HasOneThrough
    {
        return $this->tasks()->one()->ofMany('priority', 'max');
    }
 
    /**
     * Отримати найтриваліше завдання.
     */
    public function longestTask(): HasOneThrough
    {
        return $this->tasks()->one()->ofMany([
            'estimated_hours' => 'max',
        ]);
    }
}

З визначеними методами відносин доступ до конкретних записів став простим:

$department = Department::find(1);
 
// Отримати найновіше завдання
$latestTask = $department->latestTask;
 
// Отримати найперше створене завдання
$firstTask = $department->firstTask;
 
// Отримати завдання з найвищим пріоритетом
$criticalTask = $department->criticalTask;
 
// Отримати завдання з найтривалішою оцінкою годин
$longestTask = $department->longestTask;

Ці нові методи відносин спрощують написання виразного та підтримуваного коду, чітко демонструючи зв’язки між моделями та роблячи доступ до складних даних більш інтуїтивним

Популярні

Інше, що варто прочитати

11 Оновлено 26 червня, 2026

Laravel: шлях до створення справді дієздатних AI-агентів

Чи готові ви підвищити ефективність своїх проектів на Laravel і спростити інтеграцію штучного інтелекту? У нашій статті ви дізнаєтеся, як Vizra ADK може революціонізувати ваш підхід до розробки, розширюючи можливості, забезпечуючи тестування та надійність для ваших AI-агентів

12 Оновлено 26 червня, 2026

Генерація документації в Laravel за допомогою штучного інтелекту

Docudoodle — це потужний пакет для генерації документації в Laravel, який допомагає легко аналізувати вашу кодову базу та створювати документацію за допомогою обраного вами AI. Чи готові ви дізнатися, як цей інструмент може спростити вашу роботу з документуванням коду? Читайте далі!

10 Оновлено 26 червня, 2026

Остаточний посібник з вебхуків у Laravel

Сучасні веб-додатки вимагають миттєвого обміну інформацією, і вебхуки стають незамінними помічниками у цьому процесі. Пориньте у світ вебхуків у Laravel і дізнайтеся, як легко реалізувати цю технологію у своїх проєктах, забезпечуючи безпеку та продуктивність