Как правильно создать отдельную модель для pivot таблицы в связи многие ко многим?

Я пишу небольшой проект, пусть это будет библиотека. Использую пакет для админки `frozennode/laravel-administrator`. Имеются следующие таблицы: books, offices, book_office. У таблицы book_office, помимо полей book_id, office_id есть поле available, которое означает наличие книги в том или ином офисе. Столкнулся со следующей проблемой: в используемом для админки пакете не предусмотрен функционал, отвечающий за взаимодействие с такого рода полями. Прочитал, что для этих целей лучше создать доп. модель для связующей таблицы, и отдельным пунктом меню редактировать нужные поля. Вопрос вот в чем, когда я создаю модель и описываю у нее методы, получается вот так:
class BookOffice extends \Eloquent
{
    /**
     * Model's table
     * 
     * @var string
     */
    protected $table = 'book_office';

    /**
     * @var bool
     */
    public $timestamps = false;

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function book()
    {
        return $this->belongsTo(Book::class, 'book_id');
    }

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function office()
    {
        return $this->belongsTo(Office::class, 'office_id');
    }

}


Но при обращении к тому или иному методу, получается ошибка, так как по умолчанию у моделей свойство protected $primaryKey = 'id';
На данный момент я добавил в таблицу колонку id, но боюсь, что это не совсем правильно, так как первичный ключ у меня был установлен на book_id + office_id. Подскажите, есть ли для моей проблемы предусмотренное в Laravel решение?
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы