Я пишу небольшой проект, пусть это будет библиотека. Использую пакет для админки `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 решение?