Я пять дней в Laravel и после нескольких часов просмотра Jeffrey Way, я решил углубиться в создание приложения для обучения. Я застрял в точке работы с таблицами в макете hasManyThrough и не найденном классе. Любая помощь приветствуется.
Я пытаюсь получить:
Отдельный список спецификаций кабелей, которые разрешены с выбранным параметром cable_installation_method
Спасибо!
ТАБЛИЦА 1: характеристики кабеля
cable_specifications_id (REPEATS)
other_columns...
ТАБЛИЦА 2: Cable_installation_methods
cable_installation_methods_id (UNIQUE)
other_columns...
ТАБЛИЦА 3: кабель_установки (PIVOT)
cable_specifications_id (REPEATS)
cable_installation_methods_id (REPEATS)
Мои занятия:
use Illuminate\Database\Eloquent\Model as Eloquent;
class CableInstallation extends Eloquent {
protected $table = 'cable_installations';
protected $fillable = [];
public function cable_installation_method()
{
return $this->belongsTo('CableInstallationMethod');
}
public function cable_specification()
{
return $this->belongsToMany('CableSpecifications');
}
public function voltage_drop()
{
return $this->belongsToMany('CableVoltageDrop');
}
}class CableInstallationMethod extends Eloquent {
protected $table = 'cable_installation_methods';
protected $fillable = [];
public function CableInstallation()
{
return $this->hasMany('CableInstallation');
}
public function CableSpecByInstall()
{
return $this->hasManyThrough('CableSpecification', 'CableInstallation', 'cable_specifications_id', 'cable_installations_id')
->distinct();
}
}
class CableSpecification extends Eloquent {
protected $table = 'cable_specifications';
protected $fillable = [];
public function CableInstallFromSpec()
{
return $this->hasMany('CableInstallation');
}
}
В моем контроллере я вызываю эту функцию согласно ниже:
public function VoltageDropLoad()
{
$InstallationMethods = CableInstallationMethod::all();
$CableSelected = CableInstallationMethod::where("cable_installation_methods_id", 1)->firstOrFail();
$CableTypes = $CableSelected->CableSpecByInstall()->toJson();
return view('pages.voltcalc', compact('InstallationMethods', 'CableTypes', 'CableTypes'));
}
Я в конечном итоге с этой ошибкой:
FatalErrorException в Model.php, строка 911:
Класс ‘CableInstallation’ не найден
Вы еще не получили свой «кабель». Пытаться:
$CableSelected = CableInstallationMethod::where("cable_installation_methods_id", 1)->firstOrFail();
Просто чтобы прояснить это немного. Ваша кабельная установка в данном случае не является осью (по моим расчетам). Это просто еще одна модель, которая содержит отношения к двум другим. Сводная таблица обычно не имеет модели и используется для множества отношений.
Например; что-то вроде cable_installers
за cable_installations
где вы можете иметь несколько инсталляторов, работающих на кабельных установках. В этом случае «установщики» будут моделью (с таблицей), «установки» будут моделью (таблица уже предоставлена) и installations_installers
будет сводная таблица, в которой хранится отношение.
Других решений пока нет …