Это может быть странный вопрос.
Я создаю приложение базы данных аниме / манги, и в настоящее время я сталкиваюсь с относительно небольшой проблемой — у меня есть две модели, Anime и Manga, каждая из которых представляет свою собственную таблицу в базе данных (очевидно). Однако мне нужно иметь третью таблицу, которая определяет любые отношения между этими двумя.
Моя схема для сводной таблицы выглядит следующим образом:
Schema::create('related_items', function(Blueprint $table)
{
$table->increments('id');
$table->integer('item_id')->unsigned();
$table->integer('related_id')->unsigned();
$table->string('relation', 16);
$table->char('item_type', 5);
$table->char('related_type', 5);
$table->timestamps();
});
Основная проблема, однако, заключается в том, что аниме может быть связано с другим аниме, или с мангой, и наоборот. Я не мог придумать лучшего решения, чем это, пример строк в этой таблице:
id: 1
item_id: 1
related_id: 2
relation: adaptation
item_type: anime
related_type: manga
А ТАКЖЕ:
id: 2
item_id: 2
related_id: 1
relation: source
item_type: manga
related_type: anime
Я не слишком рад этому. Во-первых, я не смогу использовать это ни в одной из двух моделей — мне придется создать совершенно новый экземпляр RelatedItem. Кроме того, я должен создать две строки для каждого отношения.
Есть ли способ сделать это лучше, лучше сохранить две таблицы (я знаю, что это легко сделать, если я объединю аниме и мангу в одну таблицу), так как они не имеют одинаковые столбцы?
Благодарю.
Задача ещё не решена.
Других решений пока нет …