我有这样的关系
=> id
public function proposals(){
return $this->hasMany(Proposal::class)
}
=> request_id
=> company_id
public function request(){
return $this->belongsTo(Request::class)
}
public function proposals(){
return $this->belongsTo(Company::class)
}
=> id
public function proposals(){
return $this->hasMany(Proposal::class)
}
我曾经做过类似的事情:
$request->with('proposals')->whereDoesntHave('company', function($query){
$query->where('company_id', '<>', 1);
})->get()
但它没有成功。
在这种情况下,如何检索公司尚未发送提案的所有请求?
用户可以有多个公司,用户可以请求,公司< / strong>通过提案
回复此请求答案 0 :(得分:0)
我在架构中看到的是数据透视表关系。
请求可以属于许多公司,公司可以有多个请求。两者之间的关系是提案,这是您的数据透视表。
首先,您需要为模型添加正确的关系
class Request {
public function companies() {
// You will need to probably set the foreign and local keys as extra parameters here
return $this->belongsToMany(Company::class, 'proposals')->using(Proposal::class);
}
}
和
class Company {
public function requests() {
// You will need to probably set the foreign and local keys as extra parameters here
return $this->belongsToMany(Request::class, 'proposals')->using(Proposal::class);
}
}
最后,您可以使用将成为Proposal对象的pivot获取提案。
要解决原始查询,您只需执行以下操作:
$requests = Request::with(['companies' => function($q) { $q->where('companyid', '!=',1); }]);