Php 两个模型之间的拉威尔关系

Php 两个模型之间的拉威尔关系,php,laravel,Php,Laravel,我现在正在努力处理人际关系,希望能得到一些帮助,帮助我处理好这段关系。我用的是拉威尔 假设您有这样一个员工模型: Staff.php class Staff extends \Eloquent { protected $fillable = []; public function status() { return $this->belongsTo('Staff_status'); } } 员工数据库表如下所示: Table Name:

我现在正在努力处理人际关系,希望能得到一些帮助,帮助我处理好这段关系。我用的是拉威尔

假设您有这样一个员工模型:

Staff.php

class Staff extends \Eloquent {
    protected $fillable = [];

    public function status()
    {
        return $this->belongsTo('Staff_status');
    }
}
员工数据库表如下所示:

Table Name: staff
Fields: id, staffer_name, status_id
您还有一个员工状态模型,如下所示:

Staff_status.php

class Staff_status extends Eloquent {

    public function staff()
    {
        return $this->hasMany('Staff');
    } 

}
您还有一个staff数据库表,如下所示:

Table Name: staff_statuses
Fields: id, status_name
但是,当我尝试加载staff controller index方法时,它表示找不到类staff_状态


你知道为什么吗?

你已经使用
Staff\u status.php
作为你的
模型的名称
,但是你在类名中使用了
Staff\u status
,因此你也在控制器中使用
Staff\u status
来调用它。这就是问题所在

更改文件名以匹配
类名
。例如,使用如下内容:

// StaffStatus.php
class StaffStatus extends Eloquent{

    protected $table = 'staff_statuses';

    public function staff()
    {
        return $this->hasMany('Staff');
    } 
}

// Staff.php
class Staff extends Eloquent {

    protected $table = 'staff';

    protected $fillable = [];

    public function status()
    {
        return $this->belongsTo('StaffStatus');
    }
}
$staffStatus = StaffStatus::all();
$staff = Staff::all();
控制器中
可以使用如下内容:

// StaffStatus.php
class StaffStatus extends Eloquent{

    protected $table = 'staff_statuses';

    public function staff()
    {
        return $this->hasMany('Staff');
    } 
}

// Staff.php
class Staff extends Eloquent {

    protected $table = 'staff';

    protected $fillable = [];

    public function status()
    {
        return $this->belongsTo('StaffStatus');
    }
}
$staffStatus = StaffStatus::all();
$staff = Staff::all();
名称空间应用程序

使用Illumb\Database\Elount\Model

班级照片扩展模型 {

}

班主任延伸模式 {

}

类产品扩展模型 {


}

此问题是否与文件名问题有关?如果您将该类重命名为Staff_Status,会怎么样?(与您命名的php文件完全相同)很抱歉,我正在使用Laravel,但我忘了提到它,但它仍然在标记中。很抱歉,我编辑了我的评论,正如您在标题中所说的,我不知道Laravel,但我有使用其他框架的经验。检查是否是文件名->类名问题。我已检查并验证这不是文件名和类名命名约定的问题。您是否运行了
composer dump autoload
?这很好,但出于某种原因,我将staff_status.php放在staff_status.php中,您会纠正关系问题吗?我尝试了这个方法但它不起作用。我仍然收到相同的错误。我尝试了这个,但没有成功。当我为每一位员工添加dd($staff)时,就没有关系了。所以我想知道它是否不理解需要视为键的字段是否是status\u id。我在HTML中执行foreach循环时,试图访问$staff->status->name。我理解我所犯的错误,但不确定为什么不能建立这种关系。
public function photos()
{
    return $this->morphMany('App\Photo', 'imageable');
}