我在错字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
,问题已解决。除此之外,检查注释和命名惯例并与现有(和工作)模型进行比较。