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