我有两张桌子,客户和公司 每家公司都有很多客户,每个客户都有一家公司
这是我的模特:
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.
谢谢你的帮助!
答案 0 :(得分:5)
$clients = Company::where('guid',$guid);
这将返回Builder类,因此当您添加->clients()
时,它会给您错误,因为构建器类没有您的模型所使用的clients方法。
正确的代码是..
$clients = Company::with('clients')->where('guid',$guid)->get();
PS。不要使用->all()
,除非$companies = Company::all()
答案 1 :(得分:0)
您在模型中定义的关系必须像这样调用:
#include <string>
#include <array>
#include <vector>
#include <iostream>
int main() {
int N;
std::cin >> N;
constexpr const int Split = 2;
using StringPack = std::array<std::string, Split>;
std::vector<StringPack> output;
for (int wordIndex = 0; wordIndex < N; ++wordIndex) {
std::string word;
std::cin >> word;
StringPack out;
{
int index = 0;
for (char c : word) {
out[index % Split] += c;
++index;
}
}
output.emplace_back(out);
}
for (const auto & out : output) {
for (const auto & word : out) {
std::cout << word << ' ';
}
std::cout << '\n';
}
}
它将查询贵公司的所有客户端,不要使用方法all()来执行此操作。在您的客户端模型上执行相同的操作以便公司进行搜索。
$clients = Company::where('guid',$guid)->clients;