Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 更正包含指定类别的作业列表输出的问题_Typo3_Extbase - Fatal编程技术网

Typo3 更正包含指定类别的作业列表输出的问题

Typo3 更正包含指定类别的作业列表输出的问题,typo3,extbase,Typo3,Extbase,我使用的是打字3 8.7 我想在我的扩展中输出当前工作邀请的列表,包括相应的类别 这是我的代码: /** * Return all active jobs and join category title to each job * * @return QueryResult * @return array */ public function findAll() { /** @var QueryBuilder $queryBuilder */ $queryBuilder = G

我使用的是打字3 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')
列出了所有实际作业,但没有内容

当我执行以下操作时:

->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')
所有实际作业都列在作业标题(无作业编号)中,但每个作业三次,每个select语句一次

当我执行以下操作时:

->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')
情况更糟。将列出分配给当前作业的所有类别。但同样的:按六个类别,每个类别都列出六次


有人能暗示我的错误在哪里吗?非常感谢。

如果在tx\u ats\u domain\u model\u job.cat中仅代表来自tx\u ats\u domain\u model\u类别的uid,则必须

$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是tx_ats_domain_model_类别的uid。您的解决方案导致我在“字段列表”中找到错误消息未知列“tx_ats_domain_model_category.catname”。我只在域模型类别中配置了tx_ats_domain_model_category.title。我一定要计划些什么吗?来自SwitzerlandHm的问候,您在ext_tables.sql或TCA中的Configuration/TCA/tx_ats_domain_model_category.php中是否定义了数据库表中不存在的字段catname?因为querybuilder不访问此字段?我的查询只访问表tx_ats_domain_model_category中的字段uid和title…嗯…,对不起,我搞错了。我将数据库中的字段从“title”重命名为“catname”——不要问为什么。在TCA中,“catname”定义为字段类型输入,在域模型中定义为*@var string*/受相应的get和set类型保护