Laravel 5 hasManyThrough 问题
Laravel 5 hasManyThrough issue
我已经进入 Laravel 五天了,在观看 Jeffrey Way 数小时后,我决定深入研究构建一个应用程序来学习。我被困在使用 hasManyThrough 布局中的表格但未找到 class 的时候。感谢任何帮助。
我正在尝试检索:
所选 cable_installation_method
允许的不同电缆规格列表
谢谢!
TABLE 1: cable_specifications
cable_specifications_id (REPEATS)
other_columns...
TABLE 2: cable_installation_methods
cable_installation_methods_id (UNIQUE)
other_columns...
TABLE 3:cable_installations(枢轴)
cable_specifications_id (REPEATS)
cable_installation_methods_id (REPEATS)
我的class是:
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 in Model.php line 911:
Class 'CableInstallation' not found
您还没有真正获取您的 "cable"。尝试:
$CableSelected = CableInstallationMethod::where("cable_installation_methods_id", 1)->firstOrFail();
稍微澄清一下。在这种情况下,您的电缆安装并不是真正的枢轴(根据我的估计)。它只是包含与其他两个的关系的另一个模型。枢轴 table 通常没有模型,用于多对多关系。
例如;类似于 cable_installers
for cable_installations
,您可以让多个安装人员处理电缆安装。在这种情况下,"installers" 将是一个模型(带有 table),"installations" 将是一个模型(table 已经提供)并且 installations_installers
将是一个存储关系的枢轴table。
我已经进入 Laravel 五天了,在观看 Jeffrey Way 数小时后,我决定深入研究构建一个应用程序来学习。我被困在使用 hasManyThrough 布局中的表格但未找到 class 的时候。感谢任何帮助。
我正在尝试检索:
所选 cable_installation_method
允许的不同电缆规格列表谢谢!
TABLE 1: cable_specifications
cable_specifications_id (REPEATS)
other_columns...
TABLE 2: cable_installation_methods
cable_installation_methods_id (UNIQUE)
other_columns...
TABLE 3:cable_installations(枢轴)
cable_specifications_id (REPEATS)
cable_installation_methods_id (REPEATS)
我的class是:
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 in Model.php line 911: Class 'CableInstallation' not found
您还没有真正获取您的 "cable"。尝试:
$CableSelected = CableInstallationMethod::where("cable_installation_methods_id", 1)->firstOrFail();
稍微澄清一下。在这种情况下,您的电缆安装并不是真正的枢轴(根据我的估计)。它只是包含与其他两个的关系的另一个模型。枢轴 table 通常没有模型,用于多对多关系。
例如;类似于 cable_installers
for cable_installations
,您可以让多个安装人员处理电缆安装。在这种情况下,"installers" 将是一个模型(带有 table),"installations" 将是一个模型(table 已经提供)并且 installations_installers
将是一个存储关系的枢轴table。