Справка по активной записи Codeigniter - PullRequest
0 голосов
/ 07 июня 2011

Я пытаюсь добавить функцию поиска на свой веб-сайт, пользователь может искать работу, используя имена секторов, поэтому, например, он может захотеть найти

IT, СМИ, ИНТЕРНЕТ, МАРКЕТИНГ

Я хочу взять этот поисковый термин и вернуть все вакансии, соответствующие этому поисковому запросу, однако работа может иметь более одного сектора, но я хочу, чтобы работа возвращалась только один раз.

Ниже мой текущий код, который не работает,

public function getJobsBySector($criteria)
{

        $criteria = explode("," $criteria);
        $this->db->select('job_id, job_title, salary, retrain, bonuses_available, bonus_description, job_summary, job_description,  company_name, company_summary, logo_small, logo_large, employers.employer_id')
        ->from('jobs')
        ->join('employers', 'employers.employer_id = jobs.employer_id', 'left')
    //  ->join('applications', 'applications.jobs_job_id = jobs.job_id', 'left')
        $i = 0;
        foreach($criteria as $cri) {
            $this->db->like('sector', $cri[$i])
            $i++;
        }

        $query = $this->db->get();

        return $query->result_array();
}

Ответы [ 2 ]

1 голос
/ 07 июня 2011

MySQL SELECT может иметь модификатор DISTINCT, который будет возвращать любую подходящую строку только один раз.У Codeigniter есть специальный метод для добавления DISTINCT к вашему запросу.

...
$this->db->select('job_id, job_title, salary, retrain, bonuses_available, bonus_description, job_summary, job_description,  company_name, company_summary, logo_small, logo_large, employers.employer_id')
->disctinct()
->from('jobs')
...
0 голосов
/ 08 июня 2011

Во-первых, это неправильное использование foreach:

foreach($criteria as $cri) {
  $this->db->like('sector', $cri[$i])
  $i++;
}

должно быть:

foreach($criteria as $cri) {
  $this->db->like('sector', $cri)
}

НО это выдаст запрос с ... LIKE что-то И LIKE что-то, что не то, что вам нужно, поэтому правильная версия должна выглядеть так:

foreach($criteria as $cri) {
  $this->db->or_like('sector', $cri)
}

И не стоит беспокоиться о возврате задания только один раз, пока поле сектора является строкой, что, похоже, имеет место в данном случае с учетом вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...