Laravel两种模式之间的关系

时间:2014-08-17 01:10:10

标签: php laravel

我现在正努力与人际关系合作,并希望得到一些帮助,以便如何使这种关系发挥作用。我正在使用Laravel。

假设您有一个类似的员工模型:

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_statuses.php

class Staff_status extends Eloquent {

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

}

您还有一个员工数据库表,如下所示:

Table Name: staff_statuses
Fields: id, status_name

然而,当我尝试加载人员控制器索引方法时,它表示找不到类Staff_status。

知道为什么吗?

2 个答案:

答案 0 :(得分:1)

您已使用Staff_statuses.php作为model的名称,但您在类名中使用了Staff_status,因此您使用控制器中的Staff_status来调用它好。这就是问题所在。

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

// 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');
    }
}

controller中,您可以使用以下内容:

$staffStatus = StaffStatus::all();
$staff = Staff::all();

答案 1 :(得分:0)

命名空间App;

使用Illuminate \ Database \ Eloquent \ Model;

类Photo扩展Model {

public function imageable()
{
    return $this->morphTo();
}

}

class Staff扩展Model {

public function photos()
{
    return $this->morphMany('App\Photo', 'imageable');
}

}

类产品扩展模型 {

public function photos()
{
    return $this->morphMany('App\Photo', 'imageable');
}

}