Управління відносинами володіння між моделями Eloquent за допомогою Laravel Ownable

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

Вам цікаво, як ефективно управляти власністю моделей у вашому додатку Laravel? Ознайомтеся з пакетом Laravel Ownable, який дозволяє легко передавати права на володіння, відстежувати історію власності та здійснювати операції з кількома об'єктами одночасно

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

# Основні можливості

  • Гнучка власність: Будь-яка модель може бути власником будь-якої іншої моделі
  • Перехід власності: Можливість передавати право власності між різними власниками
  • Історія власності: Відстеження змін у праві власності з часом
  • Поточний власник: Легко отримати інформацію про поточного власника будь-якого об'єкта з правом власності
  • Пакетні операції: Перевірка статусу власності та управління кількома об'єктами з правом власності
  • Автоматичне очищення: Автоматичне видалення записів про власність при видаленні моделей
  • Підтримка фасадів: Використання зручного фасаду Owner для операцій з правом власності

# Приклад використання

Припустимо, у нас є моделі User та Task. Завдяки пакету Laravel Ownable ми можемо представити право власності, використовуючи контракти Owner та Ownable, а також трейт HasOwnables і IsOwnable у відповідних моделях.

use Sowailem\Ownable\Traits\HasOwnables;
use Sowailem\Ownable\Contracts\Owner as OwnerContract;
 
// Модель власника (наприклад, User)
class User extends Authenticatable implements OwnerContract
{
    use HasOwnables;
}
use Sowailem\Ownable\Traits\IsOwnable;
use Sowailem\Ownable\Contracts\Ownable as OwnableContract;
 
// Модель з правом власності
class Task extends Model implements OwnableContract
{
    use IsOwnable;
}

Тепер у вас є доступ до кількох методів, які дозволяють надати, забрати, видалити та перевірити право власності.

$user = User::first();
$task = Task::first();
 
// Надати право власності на задачу користувачу
$user->giveOwnershipTo($task);
 
$task->ownedBy($user);
 
if ($task->isOwnedBy($user)) {
    // Перевірка, чи належить задача користувачу
}
 
// Передача прав власності іншому користувачу
$someOtherUser = User::find(2);
$user->transferOwnership($task, $someOtherUser);
 
// Отримати поточного власника об'єкта
$currentOwner = $task->currentOwner();
 
// Отримати всіх власників (включно з історією власності)
$allOwnersOfTheTask = $task->owners()->get();
 
// Прибрати право власності
$user->takeOwnershipFrom($task);

Якщо ви віддаєте перевагу використовувати реалізацію фасаду, вона також доступна.

use Illuminate\Support\Facades\Log;
use Sowailem\Ownable\Facades\Owner;
 
$user = User::find(4);
$task = Task::find(2);
 
Owner::give($user, $task);
 
if (Owner::check($user, $task)) {
    Log::info("Користувач {$user->id} є власником задачі {$task->id}");
}
 
$newOwner = User::find(1);
 
Owner::transfer($user, $newOwner, $task);
Log::info("Задача {$task->id} тепер належить {$task->currentOwner()->name}");

Ще однією корисною функцією пакету є наявність міграції, яка допомагає відстежувати зміни у праві власності на ваші моделі. Записи у вашій базі даних виглядають приблизно так:

Дізнайтеся більше про цей пакет та перегляньте вихідний код на GitHub

Популярні

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

74 Оновлено 01 червня, 2026

Laravel Boost — ваш стартовий набір для програмування з використанням штучного інтелекту

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

15 Оновлено 01 червня, 2026

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

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

41 Оновлено 01 червня, 2026

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення