Php 类型3将uid设置为新型号
简单问题:如何为新模型设置uid?类型3 8.7.17。 我尝试了添加方法Php 类型3将uid设置为新型号,php,typo3,typo3-8.x,Php,Typo3,Typo3 8.x,简单问题:如何为新模型设置uid?类型3 8.7.17。 我尝试了添加方法 public function setUid($uid) { $this->uid = $uid; } 我假设我正在创建一个自定义扩展,并希望将uid保存在一个新模型中 但这种模式并没有节约。我知道这是不推荐的。但我有理由需要它 我需要id,因为用户每天都从csv导入数据。我有相关数据。当用户进行导入时,UID正在更改。我也不能指定日期。如果我没有弄错的话,函数setUid()已经存在于模型中,通常它只是在
public function setUid($uid)
{
$this->uid = $uid;
}
我假设我正在创建一个自定义扩展,并希望将uid保存在一个新模型中
但这种模式并没有节约。我知道这是不推荐的。但我有理由需要它
我需要id,因为用户每天都从csv导入数据。我有相关数据。当用户进行导入时,UID正在更改。我也不能指定日期。如果我没有弄错的话,函数setUid()
已经存在于模型中,通常它只是在您自己的模型类扩展的类中。因此,您可能已经可以使用
setUid()
,而无需在自己的模型类中编写它
主要问题是uid
是一个自动增量
、索引和主键,因此必须确保uid的新值始终是唯一的。另外,在TYPO3中,
setUid()
的单独使用可能仍会被某种方式阻止
对于导入相关的挑战,存在扩展,这可能是您所需要的。设置
uid
并不容易,但是您可以使用\TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper
从给定的数据数组创建实体实例
$data = [
'uid' => 10101,
'title' => 'Foo Bar Baz',
…
];
$dataMapper = GeneralUtility::makeInstance(ObjectManager::class)
->get(DataMapper::class);
$obj = reset($dataMapper->map(YourModel::class, [data]));
或者您只需创建模型的新实例并使用更改uid属性:
$obj = new YourEntity();
$refl = new ReflectionClass(YourEntity::class);
$refl->getProperty('uid')->setValue($obj, '10101');
在导入的情况下,我更喜欢前一种方式,因为您需要以某种方式将数据映射到实例,这就是DataMapper的用途
另一方面,您可以看看我使用了一个简单的行查询,如下所示:
$GLOBALS['TYPO3_DB']->sql_query(
'INSERT INTO my_table (uid,title,pid)
VALUES ('.$id.',"'.$title.'",'.$storagePid.')'
);
从t3 8开始,您可以(应该)使用原则:
$connectionPool=GeneralUtility::makeInstance(ConnectionPool::class);
$queryBuilder = $connectionPool->getQueryBuilderForTable($table);
$queryBuilder
->insert($table)
->values([
'name' => $name,
'crdate' => time(),
'pid' => $pid,
'uid' => $uid
])
->execute();
简单和标准。即使在t3中。我假设您正在创建自定义扩展,并且希望将uid保存在模型中,不是吗?这正是我需要的。您应该详细说明[您]需要它的原因。否则,我们无法确定是否有更好的解决方案。如何在数据库中存储具有操纵uid的对象?我尝试通过存储库设置uid,但从来没有设置过……老实说,我放弃了使用typo3,这太疯狂了,我很高兴我已经忘记了这个问题;)嗯,虽然Extbase有时仍在运行,但TYPO3在每个版本中都变得越来越干净和更好。对于大型CMS平台,IMHO是最好的选择。为了解决这个问题,我使用了我自己的查询-查看我的答案。如果我没有弄错的话,这不应该在t3 9+上工作?…对,除非你安装“typo3db_legacy”扩展名$GLOBALS['TYPO3_DB']在V9中不再受支持。而且t3疯狂了…我过来了,因为我想克隆一个对象,我认为这不是太多的要求,但在t3你只是不能,除非你黑客或有扩展…