我很难尝试解决问题。
我有两张桌子。一个用于公司,另一个用于每个公司提供的服务。每个服务都有一个外键' 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.
我知道雄辩的基础,但我无法弄清楚如何做到这一点。
我需要一些帮助。感谢。
答案 0 :(得分:1)
这将为您提供提供1项或更多服务的所有公司。 (任何 服务
的公司)$companies = Company::has('services')->get();
Docs Eloquent Querying Relations
<强>更新强>
你的答案是对的。我读错了你的问题。如果您想查找服务符合您标准的公司,可以使用whereHas
方法。
$companies = Company::whereHas('services', function ($q) use ($a_number)
{
$q->where('type_of_service', $a_number);
})->get();
答案 1 :(得分:1)
我自己回答。
$companies = Company::whereHas('services', function($q) {
$q->where('id_service', a_number);
})->get()
感谢,无论如何都要回复。