Typo3存储库查询返回UID和PID,但没有其他字段



我在错字3任务中的一个非常简单的表上进行查询。但是,仅返回" UID"one_answers" PID"字段,其他字段是NULL

我的实体:

<?php
namespace NameSampleExtensionDomainModel;
use TYPO3CMSExtbaseDomainObjectAbstractEntity;
class MailAgent extends AbstractEntity
{
    /**
     * @var integer
     */
    protected $uid;
    /**
     * @var string
     */
    protected $customeremail;
    /**
     * @var string
     */
    protected $searchparameters;
    /**
     * @var string
     */
    protected $resultlist;

    public function getUid()
    {
        return $this->uid;
    }
    public function setCustomerEmail($customeremail)
    {
        $this->customeremail = $customeremail;
    }
    public function getCustomerEmail()
    {
        return $this->customeremail;
    }
    public function setSearchParameters($searchparameters)
    {
        $this->searchparameters = $searchparameters;
    }
    public function getSearchParameters()
    {
        return $this->searchparameters;
    }
    public function setResultList($resultlist)
    {
        $this->resultlist = $resultlist;
    }
    public function getResultList()
    {
        return $this->resultlist;
    }
}
?>

存储库:

<?php
namespace NameSampleExtensionDomainRepository;
use TYPO3CMSExtbasePersistenceRepository;
class MailAgentRepository extends Repository
{
    public function findByUids($uids)
    {
        $query = $this->createQuery();
        foreach ($uids as $uid) {
            $constraints[] =  $query->equals('uid', $uid);
        }
        return $query->matching(
            $query->logicalOr(
                $constraints
            )
        )->execute();
    }
}
?>

和任务中的查询:

<?php
namespace NameSampleExtensionTask;
use TYPO3CMSSchedulerTaskAbstractTask;
use TYPO3CMSExtbaseObjectObjectManager;
use TYPO3CMSExtbasePersistenceGenericPersistenceManager;
use NameSampleExtensionDomainModelMailAgent;
use NameSampleExtensionDomainRepositoryMailAgentRepository;
class MailAgentCheckup extends AbstractTask
{
    public function execute() {
        $objectManager              = GeneralUtility::makeInstance(ObjectManager::class);
        $this->MailAgentRepository = $objectManager->get(MailAgentRepository::class);
        $query = $this->MailAgentRepository->createQuery();
        $allCustomers = $this->MailAgentRepository->findAll();
        foreach ($allCustomers as $customer) {
            var_dump($customer);
        }
        return true;
    }
}
?>

我不知道为什么没有返回其他字段,而是UID和PID。我的猜测是我需要声明其他地方的映射。

编辑:这是我的TCA的内容,这可能是错误的或不够的,但是由于我正在研究现有的扩展名,因此我正在从TCA的桌子上复制工作。

tx_samplexension_domain_model_mailagent.php

return [
    'columns' => [
        'uid' => [],
        'customer_email' => [],
        'search_parameters' => [],
        'result_list' => [],
    ],
    'types' => [],
];

这是另一个表格的表格,

return [
    'columns' => [
        'immovable' => [],
        'type' => [],
        'title' => [],
        'path' => [],
        'mark_to_delete' => [],
    ],
];

尝试注入您的存储库

<?php
namespace NameSampleExtensionTask;
use TYPO3CMSSchedulerTaskAbstractTask;
use TYPO3CMSExtbaseObjectObjectManager;
use TYPO3CMSExtbasePersistenceGenericPersistenceManager;
use NameSampleExtensionDomainModelMailAgent;
use NameSampleExtensionDomainRepositoryMailAgentRepository;
use TYPO3CMSExtbaseUtilityDebuggerUtility;
class MailAgentCheckup extends AbstractTask
{
    /**
     * mailAgentRepository
     *
     * @var NameSampleExtensionDomainRepositoryMailAgentRepository
     * @inject
     */
    protected $mailAgentRepository = NULL;
    public function injectMailAgentRepository(NameSampleExtensionDomainRepositoryMailAgentRepository $mailAgentRepository) {
        $this->mailAgentRepository = $mailAgentRepository;
    }
    public function execute() {
        $allCustomers = $this->mailAgentRepository->findAll();
        DebuggerUtility::var_dump($allCustomers);exit;
        // OR
        $arguments = $this->request->getArguments();
        $uid = $arguments['uid'];
        $singleCustomer = $this->mailAgentRepository->findByUid(intval($uid));
        DebuggerUtility::var_dump($singleCustomer);exit;
        /*foreach ($allCustomers as $customer) {
            var_dump($customer);
        }*/
        return true;
    }
}
?>

我缺少该表的TCA文件。添加并声明其中的所有列后,extbase域对象变量填充了。

我遇到了相同的问题并将其修复。不确定是如何确定的,但是似乎模型内变量的严格声明正在引起typo3 10存储库的问题。因此,我编写了protected $amount,而不是protected int $amount,问题已解决。除此之外,检查注释和命名惯例并与现有(和工作)模型进行比较。

最新更新