小编Alj*_*cha的帖子

TYPO3 Extbase:如何获取禁用相关的Object,没有原始的sql-query?

场景:

我有以下型号: 域的模型

ContactPerson与FrontendUser有关系,是关系的拥有方.现在我有以下问题:
我正在激活/停用任务中的FrontendUsers,基于活动的ContactPersons.禁用或删除FrontendUser时,contactPerson-> getFrontendUser()的结果为null,即使两个存储库都是ignoreEnableFields:

    /** @var Typo3QuerySettings $querySettings */
    $querySettings = $this->objectManager->get(Typo3QuerySettings::class);
    $querySettings->setIgnoreEnableFields(true);
    $querySettings->setRespectStoragePage(false);
    $this->frontendUserRepository->setDefaultQuerySettings($querySettings);

    $debugContactPerson = $this->contactPersonRepository->findOneByContactPersonIdAndIncludeDeletedAndHidden('634');
    $debugFrontendUser = $this->frontendUserRepository->findOneByUid(7);
    \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
        array(
            '$debugContactPerson' => $debugContactPerson,
            '$debugFrontendUser' => $debugFrontendUser,
        )
    );
Run Code Online (Sandbox Code Playgroud)

结果: DebugResult

Ps:$this->frontendUserRepository->findByUid(7);也不起作用,因为它没有使用查询,但persistenceManager->getObjectByIdentifier(...当然忽略了查询设置.

问题是,在我的实际代码中我不能使用findOneByUid(),因为我无法在contact_person的frontend_user字段中获取整数值(uid).

没有使用原始查询来获取contact_person-row的任何方法来解决这个问题?


我的(是原始查询)解决方案:

因为我不想编写自己的QueryFactory而且我不想在我的contactPerson中添加冗余字段,所以我现在用原始语句解决了它.也许它可以帮助有同样问题的人:

class FrontendUserRepository extends \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
{
    /**
     * @param \Vendor\ExtKey\Domain\Model\ContactPerson $contactPerson
     * @return Object
     */
    public function findByContactPersonByRawQuery(ContactPerson $contactPerson){
        $query = $this->createQuery();

        $query->statement(
            "SELECT fe_users.* FROM fe_users" .
            " LEFT JOIN tx_extkey_domain_model_contactperson contact_person ON contact_person.frontend_user = fe_users.uid" .
            " …
Run Code Online (Sandbox Code Playgroud)

typo3 extbase

5
推荐指数
1
解决办法
1616
查看次数

TYPO3 Extbase-添加唯一约束的正确方法?

有人知道如何在ext_tables.sql不使用TYPO3的情况下添加唯一约束,而每次使用数据库分析器时都希望重新生成它吗?

例:

CREATE TABLE tableName(
  CONSTRAINT unique_iban UNIQUE (iban) 
)

CREATE TABLE tableName(
  iban varchar(255) DEFAULT '' NOT NULL UNIQUE 
)
Run Code Online (Sandbox Code Playgroud)

通过两种方式,数据库分析器都希望创建约束,即使它们已经存在。

第一个在执行时还会另外产生一个错误:

错误:重复的键名'unique_iban'

第二个每次您点击执行都会创建一个新的约束:

ALTER TABLE tableName DROP KEY iban
ALTER TABLE tableName DROP KEY iban_2
Run Code Online (Sandbox Code Playgroud)

等等

mysql typo3 extbase

3
推荐指数
1
解决办法
496
查看次数

标签 统计

extbase ×2

typo3 ×2

mysql ×1