Typo3,extbase映射实体返回无结果

时间:2015-08-05 12:24:54

标签: typo3 extbase

首先,我使用" Extension Builder"创建一个扩展。我想扩展" tt_address"扩展

我的步骤是什么?

  1. 我创建了一个实体Adress并将其映射到现有的表tt_address。在我的实体Address中,我创建了用于检索地址信息的setter和getter,例如' city,zip和street'

  2. 在此步骤之后,我创建了一个扩展AddressRepository的存储库\TYPO3\CMS\Extbase\Persistence\Repository

  3. extensionbuilder使用以下内容创建一个typoscript文件ext_typoscript_setup.txt

    config.tx_extbase {     持久{         类{

            Mab\Oaaddress\Domain\Model\Address {
                mapping {
                    tableName = tt_address
                    recordType = Tx_Oaaddress_Address
                }
            }
    
        }
    }}
    
  4. 我在storagePid

  5. 中设置了constants.txt

    在最后一步中,我想从数据库中检索所有地址,并在列表视图中显示。

    class AddressController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
    
        /**
         * Events repository
         *
         * @var \Mab\Oaaddress\Domain\Repository\AddressRepository
         * @inject
         */
        protected $addressRepository;
    
        /**
         * action list
         *
         * @return void
         */
        public function listAction() {
            // Exists adress repository?
            //var_dump($this->addressRepository);
            $addresses = $this->addressRepository->findAll();
            //var_dump(count($addresses));
            $this->view->assign('addresses', $addresses);
        }
    

    tt_address包含十多个结果。但控制器显示$addresses计数始终为0。我清除每个缓存(空的Typo3Temp文件夹,通过安装工具清空缓存,倒空后端缓存)但没有任何效果。我的控制器为什么没有返回有人可以给我一个提示吗?

    更新

    在分析查询日志后,我发现此查询已执行:

    SELECT  tt_address.* FROM tt_address  WHERE 1=1 AND (tt_address.tx_extbase_type='Tx_Oaaddress_Address') AND tt_address.pid IN (148) AND tt_address.deleted=0 AND tt_address.hidden=0
    

    如何删除此部分

    tt_address.tx_extbase_type =' Tx_Oaaddress_Address'从查询的哪一部分?

1 个答案:

答案 0 :(得分:0)

您可以添加:

config.tx_extbase {
    persistence {
        classes {
            FriendsOfTYPO3\TtAddress\Domain\Model\Address {
                mapping {
                    tableName = tt_address
                    recordType = Tx_TtAddress_Listview
                }
            }
        }
    }
}

然后将“ Tx_TtAddress_Listview”添加到您的tx_extbase_type中,如下所示: // Configuration / TCA / Overrides / tt_address.php

$tempColumnstx_yourext_tt_address[$GLOBALS['TCA']['tt_address']['ctrl']['type']] = [
    'exclude' => true,
    'label' => 'yourLabe for Type',
    'config' => [
        'type' => 'select',
        'renderType' => 'selectSingle',
        'items' => [
            ['Person','Tx_TtAddress_Listview'],
            ['MyLabel','Tx_YourExt_type']
        ],
        'default' => 'Tx_TtAddress_Listview',
        'size' => 1,
        'maxitems' => 1,
    ]
];

这会在SQL语句中添加或,例如:

... WHERE ((`tt_address`.`t
   x_extbase_type` = Tx_YourExt_type) OR (`tt_address`.`tx_extbase_type` = Tx_TtAddress_Listview) ...