我有一些相关的模型:
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 子句时它不起作用?它在我不使用 where 子句时有效,但我还需要在 user_id 上过滤项目和客户。(我的计划是允许连接到公司的多个用户查看他们的所有项目和客户。)