我很难找到解决问题的方法。
我有两张桌子。一个用于公司,另一个用于每个公司提供的服务。每个服务都有一个外键"id_company",将他引用到提供商公司。所以我的模型是这样的。
TABLE COMPANIES.
id_company INTEGER,
NAME VARCHAR,
blah, blah
TABLE SERVICES.
id_service INTEGER,
id_company INTEGER,
type_of_service INTEGER,
name VARCHAR,
blah, blah.
我的雄辩模型是这样的。
class company {
public function services() {
return $this->hasMany('Service', 'id_service');
}
}
class service {
public function company() {
return $this->belongsTo('Company');
}
}
我需要列出所有提供服务的公司。SQL应该看起来像
SELECT id_company FROM companies as c
JOIN services as s ON s.id_company = c.id_company
WHERE s.type_of_service = a_number.
我知道雄辩的基础,但我无法弄清楚如何做到这一点。
这将为您提供提供 1 项或多项服务的所有公司。(任何提供服务的公司)
$companies = Company::has('services')->get();
文档雄辩查询关系
更新
你的答案是正确的。我看错了你的问题。如果要查找具有符合您条件的服务的公司,可以使用whereHas
方法。
$companies = Company::whereHas('services', function ($q) use ($a_number)
{
$q->where('type_of_service', $a_number);
})->get();
我回答自己。
$companies = Company::whereHas('services', function($q) {
$q->where('id_service', a_number);
})->get()
谢谢,无论如何你的回应。