У меня есть эта досадная проблема при попытке выполнить метод 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()
Я застрял на этом в течение двух дней, как. Кто-нибудь знает, в чем проблема может быть здесь? Спасибо заранее!
Похоже, что это может быть проблема пространства имен - если класс 'TaskState' действительно расширяет' Eloquent', то он должен иметь метод 'newQuery()'. Однако вы пытались вручную вызвать этот метод? – alexrussell
Обратный к 'hasMany()' функции 'принадлежит To()'. Итак, на вашей функции 'task()' попробуйте вернуть 'return $ this-> attribTo ('Task', 'task_id')' ;. 'attribToMany()' обычно используется для сводных таблиц. – user3158900
Я изменил его на belongsTo(), но та же ошибка остается: спасибо за это! – vrijdrogenaam