Проблема с правильным выводом списка заданий, включая назначенную категорию

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

Вот мой код:

/**
 * Return all active jobs and join category title to each job
 *
 * @return QueryResult
 * @return array
 */
public function findAll()
{
/** @var QueryBuilder $queryBuilder */
    $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_ats_domain_model_job');
    $statement = $queryBuilder
      ->select('tx_ats_domain_model_job.uid', 'tx_ats_domain_model_job.title', 'tx_ats_domain_model_job.job_number')
      ->from('tx_ats_domain_model_job')
      ->addSelect('tx_ats_domain_model_category.title')
      ->from('tx_ats_domain_model_category')
      ->join(
            'tx_ats_domain_model_job',
            'tx_ats_domain_model_category',
            'categories',
            $queryBuilder->expr()->eq('categories.uid', $queryBuilder->quoteIdentifier('tx_ats_domain_model_job.cat'))
      )->execute();
      $results = $statement->fetch();
      return $results;
}

Когда я делаю следующее:

->select('tx_ats_domain_model_job.uid')
->from('tx_ats_domain_model_job')

Перечислены все актуальные вакансии, но без содержания.

Когда я делаю следующее:

->select('tx_ats_domain_model_job.uid', 'tx_ats_domain_model_job.title', 'tx_ats_domain_model_job.job_number')
->from('tx_ats_domain_model_job')

Все фактические вакансии указаны по ширине названия должности (без номера вакансии) - но каждая работа трижды, по одному разу для каждого оператора выбора.

Когда я делаю следующее:

->select('tx_ats_domain_model_job.uid', 'tx_ats_domain_model_job.title', 'tx_ats_domain_model_job.job_number')
->from('tx_ats_domain_model_job')
->addSelect('tx_ats_domain_model_category.title')
->from('tx_ats_domain_model_category')

Дела обстоят еще хуже. Перечислены все категории, присвоенные текущему заданию. Но опять то же самое: по шести категориям все перечисляются по шесть раз каждая.

Может кто-нибудь подскажет, в чем моя ошибка? Спасибо заранее.

0
0
57
1

Ответы 1

Если в tx_ats_domain_model_job.cat стоит только uid из tx_ats_domain_model_category, то он должен быть

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_ats_domain_model_job');
    $statement = $queryBuilder
        ->select('tx_ats_domain_model_job.uid', 'tx_ats_domain_model_job.title', 'tx_ats_domain_model_job.job_number', 'tx_ats_domain_model_category.title')
        ->from('tx_ats_domain_model_job')
        ->leftJoin(
            'tx_ats_domain_model_job',
            'tx_ats_domain_model_category',
            'categories',
            $queryBuilder->expr()->eq('categories.uid', $queryBuilder->quoteIdentifier('tx_ats_domain_model_job.cat'))
        )->execute();
    $results = $statement->fetch();

Спасибо за ваш ответ. Ваше предположение верно, в tx_ats_domain_model_job.cat находится uid tx_ats_domain_model_category. Ваше решение приводит меня к сообщению об ошибке Неизвестный столбец «tx_ats_domain_model_category.catname» в «списке полей». Я настроил только tx_ats_domain_model_category.title в категории «Модель домена». Мне нужно что-то планировать? Привет из Швейцарии

rocco h 11.09.2018 13:48

Хм, есть ли у вас в ext_tables.sql или в Configuration / TCA / tx_ats_domain_model_category.php в TCA определение поля catname, которое не выходит из таблицы базы данных? Потому что построитель запросов не имеет доступа к этому полю? Мой запрос обращается только к полям uid и title в таблице tx_ats_domain_model_category ...

KaffDaddy 12.09.2018 13:22

эээ ... извините, моя ошибка. Я переименовал поле в базе данных с «title» на «catname» - не спрашивайте почему. В TCA "catname" определяется как ввод типа поля, а в модели домена как * @var string * / защищен соответствующими get и set. С уважением.

rocco h 12.09.2018 17:20

Другие вопросы по теме