Во-первых я объясняю мой вопрос:Propel и Symfony: Join Table не работает
У меня есть две таблицы Работа и JobCategory:
job:
-------------------------------------------------
| id | category_job_id | job_name | keywords |
-------------------------------------------------
JobCategory:
-------------------------
| id | categoty_name |
-------------------------
Тхо две таблицы связано с помощью внешнего ключа «category_job_id».
В этом приложении я использую Propel ORM. Я надеялся сделать поиск, используя три поля: ключевые слова, имя_пользователя и имя категории.
Первое поле - это ключевые слова - «вход», для которых я могу написать ключевые слова, второе поле - это «имя категории», список категорий. Третье поле - это имя_задания и представляет собой «выбор», список имени задания, а если он не пуст, поля ключевых слов будут игнорироваться.
Я делаю функцию поиска, как это, но это не работает для меня:
public function searchFilter($job,$category,$keyword)
{
$order = isset($this->order) ? $this->order : Criteria::ASC;
$job = '%' .$job. '%';
$category = '%' .$category. '%';
$c = new Criteria();
$c->addJoin(JobPeer::CATEGORY_JOB_ID, JobCategoryPeer::ID);
if((null !== $category) AND ($category !== ""))
{
$c->addOr(JobCategoryPeer::CATEGORY_NAME,$category, Criteria::LIKE);
}
if((null !== $job) AND ($job !== ""))
{
$c->addOr(JobPeer::JOB_NAME,$job, Criteria::LIKE);
}
$query = JobQuery::create(null, $c)
->joinWith('Job.JobCategory')
->orderByDateOfJob($order);
if((null !== $keyword) AND ($keyword !== "")){
$keyword = '%' .$keyword. '%';
$query->filterByKeywords($keyword, Criteria::LIKE);
}
$results = $query->find();
return $results;
}
Но поиск во всех случаях это не так!
Я не думаю, что это решение вашего вопроса, но в вашем посте есть несколько ошибок. Ваша таблица, скорее всего, будет 'job_category', а не' JobCategory' - последняя соответствует вашему классу модели. Я думаю, что 'categoty_name' должно быть' category_name' тоже. – halfer
Посмотрите на Propel docs btw: есть метод toString (или аналогичный), который вы можете применить к '$ query', который даст вам SQL, который он сгенерировал. Это бесценно для отладки. – halfer