2014-02-19 45 views
1

我必须努力执行的hasMany方法时,这个恼人的问题:Laravel雄辩误差“的hasMany”的关系

我有一个任务模式,其中我想检索所有的状态

class Task extends Eloquent { 
protected $guarded = array(); 

public static $rules = array(); 


public function states(){ 
    return $this->hasMany('TaskState','task_id'); 
} 

...从这个TaskState模式(DB具有列:TASK_ID,USER_ID,状态)

class TaskState extends Eloquent { 
public $table= "taskstates"; 
protected $guarded = array(); 

public static $rules = array(); 


public function task(){ 
    return $this->belongsToMany('Task','task_id'); 
} 

然而,当我尝试执行此,

$task = Task::find($id); 
    return $task->states; 

它不断给这个错误:

Call to undefined method TaskState::newQuery() 

我卡在这个像两天。有人会知道这里可能会出现什么问题吗? 在此先感谢!

+0

这看起来可能是一个命名空间问题 - 如果TaskState类确实扩展了Eloquent,那么它应该有一个newQuery()方法。但是,您是否尝试过手动调用该方法? – alexrussell

+0

'hasMany()'函数的反函数是'belongsTo()'。所以你的'task()'函数试着返回'return $ this-> belongsTo('Task','task_id')';. 'belongsToMany()'通常用于数据透视表。 – user3158900

+0

我已将它更改为belongsTo(),但仍然存在相同的错误:无论如何要感谢! – vrijdrogenaam

回答

0

如果模型之间存在一对多关系,那么您应该在TaskState中使用'belongsTo'而不是'belongsToMany;

+0

我已经试过改变这一点,但徒劳无功:错误依然存在。不管怎么说,还是要谢谢你 :) – vrijdrogenaam