У меня есть несколько связанных моделей:метод не определен в классе Query
Client
id, name, user_id ++
Projects
id, title, client_id, user_id ++
Users
id, name ++
Клиент принадлежит пользователю, и клиент имеет много проектов, и проект принадлежит к клиенту и пользователю.
Когда я пытаюсь следующий запрос, чтобы получить проекты для клиента, я получаю сообщение об ошибке говорящего
Method [projects] is not defined on the Query class.
Что это значит?
Я попытался следующие запросы:
Client::find(2)->where('user_id', '=', Auth::user()->id)->projects() // Throws error
Client::where('id', '=', 2)->where('user_id', '=', Auth::user()->id)->projects() // Also throwing an error
Следующий запрос работает отлично:
Client::find(2)->projects
Мои модели просты и выглядит следующим образом:
<?php
class Client extends Eloquent
{
public static $timestamps = TRUE;
public function user()
{
return $this->belongs_to('User');
}
public function projects()
{
return $this->has_many('Project');
}
}
class Project extends Eloquent
{
public static $timestamps = TRUE;
public function client()
{
return $this->belongs_to('Client');
}
public function user()
{
return $this->belongs_to('User');
}
}
class User extends Eloquent
{
public static $timestamps = TRUE;
public function clients()
{
return $this->has_many('Client');
}
public function projects()
{
return $this->has_many('Project');
}
}
Почему выиграл «Это работает, когда я использую там предложения? Он работает, когда я не использую предложения where, но мне нужно также фильтровать проекты и клиентов на user_id. (Мой план, чтобы дать возможность нескольким пользователям, подключенным к компании, чтобы увидеть все свои проекты и клиенты.)
Может быть, это потому, что метод «где» возвращает некоторый новый экземпляр класса Query , а не $ это? – rMX