我正在尝试在 CodeIgniter 中运行以下查询,但它没有返回正确的输出
根据查询,条件之一是如果 $supplier_id 的值不匹配则不应显示任何结果。但是,无论 supplier_id 的值是多少,它都会显示所有结果。谁能帮我更正这个查询
public function get_onboarded_detail()
{
$supplier_id = 40;
$query = $this->db->select('*')
->from('job')
->join('job_workforce', 'job_workforce.job_id = job.id', 'Right')
->where('job_workforce.supplier_id',$supplier_id)
->where('job_workforce.status','onboarded')
->or_where('job_workforce.status','job_offer')
->or_where('job_workforce.status','offer_accepted_by_client')
->or_where('job_workforce.status','offer_accepted_by_supplier')
->get();
$res = $query->result();
}
你的 where 条件的实际问题是因为它包含“OR”条件,所以无论你的 supplier_id 系统将返回 true 结果。看下面的例子:-
你当前的where条件:-
WHERE job_workforce.supplier_id = 40 AND job_workforce.status = 'onboarded' OR job_workforce.status = 'job_offer' OR job_workforce.status = 'offer_accepted_by_client' OR job_workforce.status = 'offer_accepted_by_supplier'
应该是:-
WHERE job_workforce.supplier_id = 40 AND (job_workforce.status = 'onboarded' OR job_workforce.status = 'job_offer' OR job_workforce.status = 'offer_accepted_by_client' OR job_workforce.status = 'offer_accepted_by_supplier')
要使用 codeigniter 进行更正,请使用:
public function get_onboarded_detail()
{
$supplier_id = 40;
$query = $this->db->select('*')
->from('job')
->join('job_workforce', 'job_workforce.job_id = job.id', 'Right')
->where("job_workforce.supplier_id = $supplier_id AND (job_workforce.status = 'onboarded' OR job_workforce.status = 'job_offer' OR job_workforce.status = 'offer_accepted_by_client' OR job_workforce.status = 'offer_accepted_by_supplier')");
->get();
$res = $query->result();
}