我使用此代码,但它不能在cakephp中运行,代码是:
$inserted = $this->get_live->query("INSERT INTO myaccounts (fname) values('test');
在此之后使用:
$lead_id = $this->get_live->query("SELECT LAST_INSERT_ID()");
这是有效的,但只有一次。
答案 0 :(得分:6)
试试这个。少打字。在您的控制器中,将数据保存到数据库非常简单:
public function add() {
$data = "test";
$this->Myaccount->save($data);
// $this->set sends controller variables to the view
$this->set("last", $this->Myaccount->getLastInsertId());
}
您可以遍历数据数组以使用foreach
保存,在每个数据后返回insertId
,或者您可以使用Cake的saveAll()
方法。
Myaccount是与您的控制器关联的Model对象。 Cake的命名约定要求一个名为“myaccounts”的表具有一个名为“Myaccount”的模型类和一个名为“Myaccounts_Controller”的控制器。视图文件将位于/ app / views / myaccounts / ...中,并将以您的控制器方法命名。因此,如果您的控制器中有一个函数add()...方法,那么您的视图将是/app/Views/Myaccounts/add.ctp。
save()方法生成INSERT
语句。如果要保存的数据位于$this->data
,则可以跳过传递参数;它默认会保存$ this->数据。 save()
甚至会根据您数据中UPDATE
的存在,自动检测是生成INSERT
还是id
语句。
根据经验,如果你在Cake中的任何一点使用原始的SQL查询,你可能做错了。我还没有碰到一个如此怪异的查询,以至于Cake的ORM无法对其进行建模。
http://book.cakephp.org/2.0/en/models/saving-your-data.html
HTH:)
答案 1 :(得分:2)
您可以获取last inserted record id
(适用于cakePHP 1.3.x
和cakePHP 2.x
)
echo $this->ModelName->getLastInsertID();
或者,您可以使用:
echo $this->ModelName->getInsertID();
在第2775行的cake / libs / model / model.php中找到 CakePHP 1.3.x
CakePHP 2.x
注意:如果您手动运行插入查询,则此功能不起作用
答案 2 :(得分:0)
pr($this->Model->save($data));
id => '1'
id是最后插入的值