2014-02-19 2 views
1

У меня есть эта досадная проблема при попытке выполнить метод hasMany:Laravel красноречивой ошибка с «hasmany» отношения

У меня есть модель Task, из которых я хочу, чтобы получить все состояния

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

public static $rules = array(); 


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

... от этого TaskState модели (дб имеет столбцы: 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()' функции 'принадлежит To()'. Итак, на вашей функции 'task()' попробуйте вернуть 'return $ this-> attribTo ('Task', 'task_id')' ;. 'attribToMany()' обычно используется для сводных таблиц. – user3158900

+0

Я изменил его на belongsTo(), но та же ошибка остается: спасибо за это! – vrijdrogenaam

ответ

0

Если между моделями существует соотношение «один-ко-многим», вы должны использовать «принадлежать» в TaskState вместо «ownToMany;

+0

Я уже пытался изменить это, но напрасно: ошибка остается. Спасибо, в любом случае :) – vrijdrogenaam

Смежные вопросы