Laravel 5有很多问题

时间:2015-03-26 01:02:36

标签: php laravel-5 has-many-through

我在Laravel待了五天,经过几个小时的观看Jeffrey Way后,我决定深入研究构建应用程序以便学习。我陷入了使用hasManyThrough布局中的表和一个未找到的类的问题。任何帮助表示赞赏。

我正在尝试检索:

所选cable_installation_method

允许的电缆规格清单

谢谢!

表1:cable_specifications

cable_specifications_id (REPEATS)
other_columns...

表2:cable_installation_methods

cable_installation_methods_id (UNIQUE)
other_columns...

表3:cable_installations(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'));
}

我最终得到了这个错误:

  

Model.php第911行中的FatalErrorException:   Class' CableInstallation'找不到

1 个答案:

答案 0 :(得分:1)

你还没有真正拿走你的电缆"然而。试试:

$CableSelected = CableInstallationMethod::where("cable_installation_methods_id", 1)->firstOrFail();

只是为了清楚这一点。在这种情况下,您的电缆安装并不是真正的支点(通过我的计算)。它只是另一个包含与其他两个关系的模型。数据透视表通常没有模型,可用于多对多关系。

例如;像cable_installers这样的cable_installations,你可以让多个安装程序在电缆安装上工作。在这种情况下,"安装人员"将是一个模型(带表),#34;装置"将是一个模型(已经提供的表),installations_installers将是存储关系的数据透视表。