Я пытаюсь напрямую отредактировать мою базу данных Kodi MySQL и создать инструмент для исправления некоторых ошибок, которые всегда были не совсем правильными.
отношение таблиц - tvshow -> episode -> file
Так что я могу пока (после создания моделей для этих таблиц)
Список всех шоу
просмотреть специфику c показать и перечислить все эпизоды
показать запись файла для этого эпизода.
То, что я пытаюсь сделать, это список все файлы, которые принадлежат шоу, через выпадающий список. (поскольку мне нужно их изменить)
Поэтому мне нужно использовать модель TVShow, чтобы получить все эпиодо, имеющие запись idShow ... И затем получить все файлы на основе таблицы эпизодов. Я знаю, что Eloquent может справиться с этим обычно, но я когда-либо использовал только свою собственную структуру таблиц, но не такую, как эта ... поэтому я думаю, что моя проблема в том, чтобы использовать имена ключей и т. Д. c ...
имена столбцов ключей:
idShow
idEpisode
idFile
(где это ЖЕ имя используется в качестве первичного ключа в родительской таблице И ID сопоставления в дочерней таблице)
Anyhoo, вот мои модели ..
Есть идеи?
TVShow
<?php
namespace App\Models;
use Eloquent as Model;
class TvShow extends Model
{
public $table = 'tvshow';
protected $primaryKey = 'idShow';
public function episodes()
{
return $this->hasMany(Episode::class, 'idShow');
}
}
Эпизод
<?php
namespace App\Models;
use Eloquent as Model;
class Episode extends Model
{
public $table = 'episode';
protected $primaryKey = 'idEpisode';
public function tvshow()
{
return $this->belongsTo(TvShow::class, 'idShow', 'idShow');
}
public function season()
{
return $this->hasOne(Season::class, 'idShow', 'idShow')->where('season', '>=', 0)->where('idSeason', $this->idSeason);
}
public function file()
{
return $this->hasOne(File::class, 'idFile', 'idFile');
}
public function files()
{
return $this->hasMany(File::class, 'idFile', 'idShow');
}
}
Файл
<?php
namespace App\Models;
use Eloquent as Model;
class File extends Model
{
public $table = 'files';
protected $primaryKey = 'idFile';
public function episode()
{
return $this->belongsTo(Episode::class, 'idFile', 'idFile');
}
}
Я вызываю это в моем контроллере ...
TvShow::with('episodes.files')->get();
Я получаю ВСЕ шоу в виде списка ..?