Laravel eloquent 问题:方法不存在
Laravel eloquent issue: Method does not exist
我有 2 个表,客户和公司
每个公司有很多客户,每个客户有一个公司
这是我的模特:
class Client extends Model
{
public function company(){
return $this->hasOne('App\Company');
}
}
class Company extends Model
{
public function clients(){
return $this->hasMany('App\Client');
}
}
我正在尝试获取公司所有客户的列表
这就是我试图做的:
$clients = Company::where('guid',$guid)->clients()->all();
我收到这个错误:
BadMethodCallException in Macroable.php line 74:
Method clients does not exist.
感谢您的帮助!
$clients = Company::where('guid',$guid);
这个 returns Builder class,所以当你添加 ->clients()
它会报错,因为 builder class 没有 clients 方法,你的模型确实如此。
正确的代码是..
$clients = Company::with('clients')->where('guid',$guid)->get();
PS。不要使用 ->all()
除非它类似于 $companies = Company::all()
您在模型中定义的关系必须这样调用:
$clients = Company::where('guid',$guid)->clients;
它将查询贵公司的所有客户,不要使用方法 all() 来执行此操作。在您的客户端模型上执行相同的操作以按公司搜索。
$company = Client::where('id', 1)->company;
我有 2 个表,客户和公司 每个公司有很多客户,每个客户有一个公司
这是我的模特:
class Client extends Model
{
public function company(){
return $this->hasOne('App\Company');
}
}
class Company extends Model
{
public function clients(){
return $this->hasMany('App\Client');
}
}
我正在尝试获取公司所有客户的列表 这就是我试图做的:
$clients = Company::where('guid',$guid)->clients()->all();
我收到这个错误:
BadMethodCallException in Macroable.php line 74:
Method clients does not exist.
感谢您的帮助!
$clients = Company::where('guid',$guid);
这个 returns Builder class,所以当你添加 ->clients()
它会报错,因为 builder class 没有 clients 方法,你的模型确实如此。
正确的代码是..
$clients = Company::with('clients')->where('guid',$guid)->get();
PS。不要使用 ->all()
除非它类似于 $companies = Company::all()
您在模型中定义的关系必须这样调用:
$clients = Company::where('guid',$guid)->clients;
它将查询贵公司的所有客户,不要使用方法 all() 来执行此操作。在您的客户端模型上执行相同的操作以按公司搜索。
$company = Client::where('id', 1)->company;