Php Laravel获取雄辩的关系抛出静态方法错误

Php Laravel获取雄辩的关系抛出静态方法错误,php,laravel-4,eloquent,relationships,Php,Laravel 4,Eloquent,Relationships,您好,我使用的是Laravel 4,我有三种型号,项目(表名项目)、状态(表名:状态)和分配的项目板状态(表名:分配的项目板状态)。现在,当我创建项目时,如果没有从列表中选择,则会自动分配项目状态。assigned_project_board_status表有两个外键。表架构如下: id |项目| id |状态| id |订单|创建|更新|在 project\u id和status\u id是外键。现在我有一个这样的模型: app/models/AssignedProjectBoardStatu

您好,我使用的是Laravel 4,我有三种型号,
项目
(表名
项目
)、
状态
(表名:
状态
)和
分配的项目板状态
(表名:
分配的项目板状态
)。现在,当我创建项目时,如果没有从列表中选择,则会自动分配项目状态。
assigned_project_board_status
表有两个外键。表架构如下:

id |项目| id |状态| id |订单|创建|更新|在

project\u id
status\u id
是外键。现在我有一个这样的模型:

app/models/AssignedProjectBoardStatus.php

class AssignedProjectBoardStatus extends AbstractModel {

public function projects() {
    return $this->belongsTo('Project');
}
public function statuses() {
    return $this->belongsTo('Status');
}
}   
class Project extends AbstractModel
{
 public function assignedProjectBoardStatus() {
    return $this->hasMany('AssignedProjectBoardStatus');
 }
class Status extends AbstractModel {
public function assignedProjectBoardStatus() {
        return $this->hasMany('AssignedProjectBoardStatus');
    }
class Project extends AbstractModel
{
 public **static** function assignedProjectBoardStatus() {
    return $this->hasMany('AssignedProjectBoardStatus');
 }
app/models/Project.php

class AssignedProjectBoardStatus extends AbstractModel {

public function projects() {
    return $this->belongsTo('Project');
}
public function statuses() {
    return $this->belongsTo('Status');
}
}   
class Project extends AbstractModel
{
 public function assignedProjectBoardStatus() {
    return $this->hasMany('AssignedProjectBoardStatus');
 }
class Status extends AbstractModel {
public function assignedProjectBoardStatus() {
        return $this->hasMany('AssignedProjectBoardStatus');
    }
class Project extends AbstractModel
{
 public **static** function assignedProjectBoardStatus() {
    return $this->hasMany('AssignedProjectBoardStatus');
 }
app/models/Status.php

class AssignedProjectBoardStatus extends AbstractModel {

public function projects() {
    return $this->belongsTo('Project');
}
public function statuses() {
    return $this->belongsTo('Status');
}
}   
class Project extends AbstractModel
{
 public function assignedProjectBoardStatus() {
    return $this->hasMany('AssignedProjectBoardStatus');
 }
class Status extends AbstractModel {
public function assignedProjectBoardStatus() {
        return $this->hasMany('AssignedProjectBoardStatus');
    }
class Project extends AbstractModel
{
 public **static** function assignedProjectBoardStatus() {
    return $this->hasMany('AssignedProjectBoardStatus');
 }
在那里,当我获取项目并希望查看分配的状态时,我将按如下方式调用此选项:

 public **static** function assignedScrumBoardStatuses() {
        return **static::**hasMany('AssignedScrumBoardStatus');
    }
Project::AssignedScrumBoardStatus()

但是,这会引发以下错误:

非静态方法Project::AssignedProjectBoardStatus()不应静态调用,假设$this来自不兼容的上下文

因此,我将函数更改如下:

 public **static** function assignedScrumBoardStatuses() {
        return **static::**hasMany('AssignedScrumBoardStatus');
    }
app/models/Project.php

class AssignedProjectBoardStatus extends AbstractModel {

public function projects() {
    return $this->belongsTo('Project');
}
public function statuses() {
    return $this->belongsTo('Status');
}
}   
class Project extends AbstractModel
{
 public function assignedProjectBoardStatus() {
    return $this->hasMany('AssignedProjectBoardStatus');
 }
class Status extends AbstractModel {
public function assignedProjectBoardStatus() {
        return $this->hasMany('AssignedProjectBoardStatus');
    }
class Project extends AbstractModel
{
 public **static** function assignedProjectBoardStatus() {
    return $this->hasMany('AssignedProjectBoardStatus');
 }
但是,这会引发以下错误:

不在对象上下文中时使用$this

因此,我随后更改了函数,如下所示:

 public **static** function assignedScrumBoardStatuses() {
        return **static::**hasMany('AssignedScrumBoardStatus');
    }
然后抛出了这个错误:

不应静态调用非静态方法illumb\Database\elount\Model::hasMany()


你知道我做错了什么,以及如何从模型中获取分配的状态吗?

你不能调用
Project::assignedScrumBoardStatus()
,因为当你调用时,
Project
模型不知道你试图获取分配的scrum board状态的记录。它没有上下文

相反,找到一条记录,这样您就有了一个模型实例,然后您就可以对其调用关系方法:

$project = Project::find($id)->assignedScrumBoardStatuses();

啊,我明白了,不过我现在得到了这个错误:
类的对象illumb\Database\Eloquent\Relations\HasMany无法转换为字符串
?@001221您能用
assignedScrumboardStatus()
当前的样子更新您的问题吗?您可能试图输出assignedScrumboardStatus。从AssignedScrumBoardStatus中删除括号
()
,以便Laravel自动调用hasMany关系上的
->->get()
。这将产生一个集合。