TYPO3 将 uid 设置为新模型
TYPO3 set uid to new model
简单问题:如何设置新模型的uid?错别字 3 8.7.17。
我尝试添加方法
public function setUid($uid)
{
$this->uid = $uid;
}
我假设我正在创建自定义扩展并且我想将 uid 保存在新模型中
但是模型没有保存。我知道不推荐。但我有理由需要它。
我需要 id,因为用户每天都从 csv 导入数据。我有相关数据。当用户使导入 uid 发生变化时。我也无法指定日期。
函数setUid()
如果我没记错的话已经存在于模型中,通常它只是在你自己的模型扩展的class中-class.
因此,您可能已经可以使用 setUid()
而无需将其写入您自己的模型-class.
主要问题是 uid
是一个 auto_increment
、索引和主键,因此您必须确保 uid 的新值始终是唯一的。
此外,setUid()
的个人使用可能仍以某种方式在 TYPO3 中被阻止。
对于与导入相关的挑战,存在扩展 external_import,这可能是您所需要的。
设置 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]));
或者您只需创建一个新的模型实例并使用 Reflection 更改 uid 属性:
$obj = new YourEntity();
$refl = new ReflectionClass(YourEntity::class);
$refl->getProperty('uid')->setValue($obj, '10101');
在导入的情况下,我更喜欢前一种方式,因为您需要以某种方式将数据映射到实例,而这正是 DataMapper 的用途。
反过来你可以看看here
我用这样一个简单的行查询来做到这一点:
$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?错别字 3 8.7.17。 我尝试添加方法
public function setUid($uid)
{
$this->uid = $uid;
}
我假设我正在创建自定义扩展并且我想将 uid 保存在新模型中 但是模型没有保存。我知道不推荐。但我有理由需要它。
我需要 id,因为用户每天都从 csv 导入数据。我有相关数据。当用户使导入 uid 发生变化时。我也无法指定日期。
函数setUid()
如果我没记错的话已经存在于模型中,通常它只是在你自己的模型扩展的class中-class.
因此,您可能已经可以使用 setUid()
而无需将其写入您自己的模型-class.
主要问题是 uid
是一个 auto_increment
、索引和主键,因此您必须确保 uid 的新值始终是唯一的。
此外,setUid()
的个人使用可能仍以某种方式在 TYPO3 中被阻止。
对于与导入相关的挑战,存在扩展 external_import,这可能是您所需要的。
设置 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]));
或者您只需创建一个新的模型实例并使用 Reflection 更改 uid 属性:
$obj = new YourEntity();
$refl = new ReflectionClass(YourEntity::class);
$refl->getProperty('uid')->setValue($obj, '10101');
在导入的情况下,我更喜欢前一种方式,因为您需要以某种方式将数据映射到实例,而这正是 DataMapper 的用途。
反过来你可以看看here
我用这样一个简单的行查询来做到这一点:
$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.