Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 01.04.2019 14:02:09

Self relationship - Как реализовать

Суть вопроса примерно следующая...

Есть куча таблиц, включая таблицу с пользователями. В каждой таблице я хочу добавить поля: created_by и updated_by (т.е. кем создана запись и кем модифицирована). Эти два поля - это ссылки на id конкретного пользователя. Таблица с пользователями также должна иметь данные поля. Т.е. создали нового пользователя, соответственно записываем кто создал (или изменил).
Таким образом, обращаясь к свойству created_by (updated_by) я хочу получить объект "Пользователь", как для модели "Пользователь", так и для остальных моделей.

Например, ограничимся двумя моделями: User и Customer (организация). Пользователь может быть представителем только одного заказчика (организации), а организация может иметь много пользователей. Это классическая схема и с ее реализацией проблем нет:

class User extends Authenticatable
{
    ...
    public function customer()
    {
        $this->belongsTo('App\Customer');
    }

}

class Customer extends Model
{

    public function users()
    {
        $this->hasMany('App\User');
    }

}

А как реализовать соотношения для полей created_by (updated_by)?

Не в сети

#2 01.04.2019 15:48:41

Re: Self relationship - Как реализовать

Создаешь таблицу Customer и миграцию. В миграции создаешь необходимые поля и

            $table->integer('created_by')->unsigned()->default(1);
            $table->foreign('created_by')->references('id')->on('users');

Ну а дальше в моделях пишешь отношения

Не в сети

Подвал раздела