【问题标题】:ZF last insert id gives me back '0'ZF 最后插入 id 给我回 '0'
【发布时间】:2011-09-18 10:31:16
【问题描述】:

当我尝试使用函数“->lastInsertId()”来检索表的纬度 ID 时,我得到了“0”。 我找不到解决方案。我的表是自动增量的

我尝试使用此代码将其放入控制器中。

$reviews = new Application_Model_DbTable_Reviews();
$lastId  = $reviews->getAdapter()->lastInsertId();
echo $lastId;

我希望有人可以帮助我。

致以诚挚的问候,

尼克

【问题讨论】:

  • 您是否在同一脚本中插入记录?因为 _last_insert_id() 函数通常只适用于当前连接
  • 不,我没有在这个脚本中插入任何东西!但我试图达到的。我需要另一个插入的插入的“id”。我需要新插入评论的 id 以将其与其他表中的一行链接。

标签: mysql database model-view-controller zend-framework


【解决方案1】:

好吧,这些东西在文档中没有提到,但它适用于例如 如果您的表名 'Book' 带有 PK book_id ,FK user_id 和 'User' 表带有 PK user_id

<<Book>>
*book_id
title
user_id

<<User>>
*user_id
name
age

然后

$userTb = new Model_DbTable_User();
$user = $userTb->createRow();
$user->name = "jason";
$user->age = 25;
$user->save();

//保存记录后 ZF 会为您填充 PK,所以现在您只需通过 $userTb->user_id 就可以只读访问自动递增的 PK;

所以

$bookTb = new Model_DbTable_Book();
$book = $bookTb->createRow();
$book->title = 'php';
$book->user_id = $user->user_id;
$bookId = $book->save(); // this is another way of accessing auto generated PK at insert tim .

【讨论】:

  • 它似乎完全符合我的要求!非常感谢,我在我的脚本中解决它! :)
猜你喜欢
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 2011-11-06
  • 2014-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多