Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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
Php Typo3 8.7.3 ExtBase-存储库中的单个MySQL查询_Php_Mysql_Typo3_Extbase - Fatal编程技术网

Php Typo3 8.7.3 ExtBase-存储库中的单个MySQL查询

Php Typo3 8.7.3 ExtBase-存储库中的单个MySQL查询,php,mysql,typo3,extbase,Php,Mysql,Typo3,Extbase,我目前遇到了一个问题,我认为它与数据库基数有关,而Typo3没有认识到它 我有一个项目模型,它有不同的预评估、评估和指导,与1:n关系有关。因此,我想在这些模型中的任何一个模型中获取用户连接到的所有项目。不同模型的用户可以不同,也可以相同,但我只想让项目返回一次。由于我阅读了typo3 extbase的文档,当我使用单个db查询时,typo3隐式地找到了基数 评估、预评估和指导在TCA中设置,并在自定义列声明中使用“inline”类型 我尝试使用的函数就是这里的函数: public functi

我目前遇到了一个问题,我认为它与数据库基数有关,而Typo3没有认识到它

我有一个项目模型,它有不同的预评估、评估和指导,与1:n关系有关。因此,我想在这些模型中的任何一个模型中获取用户连接到的所有项目。不同模型的用户可以不同,也可以相同,但我只想让项目返回一次。由于我阅读了typo3 extbase的文档,当我使用单个db查询时,typo3隐式地找到了基数

评估、预评估和指导在TCA中设置,并在自定义列声明中使用“inline”类型

我尝试使用的函数就是这里的函数:

public function findOwnedProjects($filters,$aSorting = NULL, $aSearch = NULL)
{
    $user = $GLOBALS['TSFE']->fe_user->user;
    $userId = $user['uid'];

    $query = $this->createQuery();

    $orCondition[] = $query->equals('preEvaluations.frontendUser', $userId);
    $orCondition[] = $query->equals('evaluations.frontendUser', $userId);
    $orCondition[] = $query->equals('mentorings.frontendUser', $userId);
    $orCondition[] = $query->equals('projectlead', $userId);

    $condition[] = $query->logicalOr($orCondition);

    $condition[] = $query->equals("type", 'project', false);

    $query->matching($query->logicalAnd($condition));

    if (!empty($aSorting)) {
      $sSorting = $aSorting['order'] == 'asc' ? \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING : \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING;
      $sSortBy = strip_tags(trim($aSorting['sortBy']));
      $query->setOrderings(array($sSortBy => $sSorting));
    }

    return $query->execute();
}
但当有多个预评估或与项目相关联时,这将返回重复的项目。我尝试了var_转储生成的SQL语句,可以看到没有使用DISTINCT。这就是我认为的全部问题,到目前为止我还没有找到解决办法

我不是打字专家,只是想找出问题所在。如果你知道我可能错过了什么,请回答这个问题


谢谢

我会尝试使用
$query->contains
这样的方法:

$orCondition[] = $query->contains('preEvaluations.frontendUser', $userId);
$orCondition[] = $query->contains('evaluations.frontendUser', $userId);
$orCondition[] = $query->contains('mentorings.frontendUser', $userId);
$orCondition[] = $query->contains('projectlead', $userId);

我会尝试使用
$query->contains
方法,如下所示:

$orCondition[] = $query->contains('preEvaluations.frontendUser', $userId);
$orCondition[] = $query->contains('evaluations.frontendUser', $userId);
$orCondition[] = $query->contains('mentorings.frontendUser', $userId);
$orCondition[] = $query->contains('projectlead', $userId);