Don't forget that you have had a dream

    

TYPO3 获取最新插入的数据uid

TYPO3 获取最新插入的数据uid

typo3是德国人开发的一套易用型CMS,采用插件方式拼装系统,系统完全面向对象,当然原生SQL也可以用来处理部分数据,这篇文章分享下typo3中怎么样获取新插入数据的ID

插入对象时获取方式

上面已经说了,typo3是完全面向对象的,在typo3中,对于一对一、一对多、多对一、多对多的关系有着非常友好的处理方式

/**
 * action create
 *
 * @param \Whb\ExtensionName\Domain\Model\Files $newFiles
 * @return void
 */
public function createAction(\Whb\ExtensionName\Domain\Model\Files $newFiles)
{
    #...数据插入代码...
    $newFiles->setTitle('demo');
    $this->addFlashMessage('添加成功!', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::WARNING);
    $this->filesRepository->add($newFiles);
    //主要是下面两句
    $persistenceManager = $this->objectManager->get(\TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager::class);
    $persistenceManager->persistAll();
    $newDataId = $newFiles->getUid();
    var_dump($newDataId);//返回新增数据的主键uid
    //$this->redirect('list');
}

使用助手SQL函数进行插入时

虽然说typo3是完全面向对象的,但是也免不了有时会出现特殊情况,这时候就可以使用typo3自带的SQL助手函数来插入数据

//添加一條纪录
$datas = array();
$datas["items"]= 2;
$datas["getnum"]= 3;
$datas["usednum"]= 0;
$datas["userid"]= 1;
$datas["crdate"]= time();
$datas["pid"]= 110;

$GLOBALS['TYPO3_DB']->exec_INSERTquery("tx_demo_domain_model_table", $datas);
$newDataUid = $GLOBALS['TYPO3_DB']->sql_insert_id();

使用原生MySQL插入时

在typo3中,我们依然可以使用原生MySQL进行插入数据,如处理远程api中数据修改时,例如支付宝的支付回调,就可以用到下面方法进行处理,免去繁琐的model类继承,但是需要自己写MySQL连接池

$con = new mysqli($config['host'],$config['user'],$config['password'],$config['dbname']);
if(!$con){
    die("connect error:".mysqli_connect_error());
}
//方法一 使用last_insert_id
$query = "select last_insert_id()";
$newDataUid = $con->execute($query);
//第二种
$query = "select max(uid) from table";
$newDataUid = $con->execute($query);

注意:所有返回自增ID只能是insert操作,而不是update操作

您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!
所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 知识共享许可协议 进行许可。

评论已关闭

  更新日志

博客banner下方滚动文字替换为使用 一言API 随机获取 --- updated on 2019-05-22 09:04:31 星期三

  关于博主

三里林,一个致力于分享,分享心得,分享技术,分享知识点的个人博客

  近期评论

  分类目录

师哥,玫瑰到了花期,我很想你。

喜欢大胸只是本能,喜欢贫乳才是审美。

西方人并不比东方人聪明,但是他们却找对了路。

生命在于折腾,生命不息,折腾不止

人类文明从仰望星空那一刻起,就已经距离揭示宇宙奥秘仅有一步之遥了。

人生充斥着谎言,我又岂能独善其身!

我们往往把自己的性格和人品说得言过其实了。如果真理被冷酷无情地揭示出来时,我们反倒不能明辨是非了。

労働者の命は何よりも大切です。