Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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 Type3 Extbase:按1:1关系反转_Typo3_Extbase - Fatal编程技术网

Typo3 Type3 Extbase:按1:1关系反转

Typo3 Type3 Extbase:按1:1关系反转,typo3,extbase,Typo3,Extbase,在Extbase中,是否可以在不向DB中添加第二个字段的情况下反转1:1关系 例如: 扩展有联系人,可以有一个fe_用户。 联系人域模型是关系的所有者站点 现在您可以使用$contactPerson->getFrontendUser() 有没有办法在不将反向属性添加到DB的情况下将其添加到FrontendUser? 因此,您可以使用$frontendUser->getContactPerson(), 甚至更重要的是:$frontendUserRepository->findByContactP

在Extbase中,是否可以在不向DB中添加第二个字段的情况下反转1:1关系

例如: 扩展有联系人,可以有一个fe_用户。 联系人域模型是关系的所有者站点

现在您可以使用
$contactPerson->getFrontendUser()

有没有办法在不将反向属性添加到DB的情况下将其添加到FrontendUser?
因此,您可以使用
$frontendUser->getContactPerson()

甚至更重要的是:
$frontendUserRepository->findByContactPerson()


我尝试将属性添加到FrontendUser模型:

/**
 * FrontendUser
 */
class FrontendUser extends \TYPO3\CMS\Extbase\Domain\Model\FrontendUser
{

    /**
     * @var \Vendor\ExtKey\Domain\Model\ContactPerson
     */
    protected $contactPerson = null;
}
以及覆盖fe_用户TCA:

$GLOBALS['TCA']['fe_users']['columns']['contact_person'] = array(
    'exclude' => 1,
    'label' => 'LLL:EXT:ExtKey/Resources/Private/Language/locallang_db.xlf:tx_ExtKey_domain_model_contactperson',
    'config' => array(
        'type' => 'inline',
        'foreign_table' => 'tx_ExtKey_domain_model_contactperson',
        'foreign_field' => 'frontend_user',
        'minitems' => 0,
        'maxitems' => 1,
    ),
);
但当我打电话时:

/**
 * The repository for Customers
 */
class FrontendUserRepository extends \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
{
    /**
     * @param \Vendor\ExtKey\Domain\Model\ContactPerson $contactPerson
     * @param boolean $ignoreEnableFields
     * @param boolean $respectStoragePage
     * @return object
     */
    public function findByContactPerson(ContactPerson $contactPerson, $ignoreEnableFields = false, $respectStoragePage = true){
        $query = $this->createQuery();
        $query->getQuerySettings()
            ->setIgnoreEnableFields($ignoreEnableFields)
            ->setRespectStoragePage($respectStoragePage);

        $query->matching($query->equals('contactPerson', $contactPerson));
        return $query->execute()->getFirst();
    }
}
它会创建以下SQL错误:

“where子句”中的未知列“fe\u用户。联系\u人员”


TYPO3中不支持计算的双向1:1关系,只有m:n关系支持带有额外字段的双向1:1关系,这也需要在关系的相对位置上添加一个字段


关于您的场景,您必须自己在扩展的
FrontendUser
域模型中创建附加属性和数据库字段。

TYPO3中不支持计算的双向1:1关系,只有m:n关系支持带有额外字段的关系,这也需要在关系的相反位置上有一个额外字段


关于您的场景,您必须自己在扩展的
FrontendUser
域模型中创建附加属性和数据库字段。

有如下所述的可能性:。此外,如果只有一侧是“内联”而另一侧是“选择”,则这也可以工作,而不是在两侧都有“内联”关系。但是单个(反转的)“内联”关系需要定义“外部字段”。在此之后,“外来”uid仅存储在关系的一侧。

存在如下所述的可能性:。此外,如果只有一侧是“内联”而另一侧是“选择”,则这也可以工作,而不是在两侧都有“内联”关系。但是单个(反转的)“内联”关系需要定义“外部字段”。然后,“外部”uid只存储在关系的一侧