您好,我使用CakePHP 1.3,我无法中检索最后插入行的ID。其实,我现在用的这 - $>型号 - > ID中检索最后插入的ID,但我无法得到的ID。当试图检查什么是返回类型,它说为布尔(假),则返回这意味着什么。

下面我加载在不同的控制器中的不同的模式,所以会是这样的问题?但是,即使我装,我回去没事!!

$this->loadModel('Contact');
$this->Contact->query("insert into contacts(tblContact_firstName,tblContact_lastName,tblContact_company,tblContact_department,tblContact_address,tblContact_country,tblContact_city,tblContact_state,tblContact_zipcode,tblContact_phone1,tblContact_email1) values('$sanitizedFormData[fname]','$sanitizedFormData[lname]','','$sanitizedFormData[company]','$sanitizedFormData[address]','$sanitizedFormData[country]','$sanitizedFormData[city]','$sanitizedFormData[state]','$sanitizedFormData[zip]','$sanitizedFormData[phone]','$sanitizedFormData[email]');");

$this->loadModel('Contact');
$contactId = $this->Contact->id;

和当我打印的这 - $>联系阵列递归,我发现的“ID”的值的密钥空。以便解释了为什么我收到一个空值。

现在给我的情况,我将如何得到最后插入的ID,具体到控制器联系?

有帮助吗?

解决方案

当您使用您query()宽松很多AUTOMAGIC cakephp的提供。使用save()代替。

事实上,你甚至都不需要加载联系在这种情况下。你可以从query()甚至保存到任何其他表中的电流控制器执行的任何查询。

您也能避免使用loadModel()如果您当前的模型是用某种方式联系($this->CurrentModel->AnotherOne->Contact->save(...))相关联。

其他提示

如果这是MySQL的,你可以使用“从通讯录中选择LAST_INSERT_ID()”查询来获取最后一个ID。 或只是 “SELECT LAST_INSERT_ID()”

有关MSSQL它是 “SELECT @@ IDENTITY”。

这绕过在CakePHP任何溶液的,所以有可能是一个更好的解决方案。

您可以得到由last inserted record id

echo $this->ModelName->getLastInsertID();

可替换地,可以使用:

echo $this->ModelName->getInsertID();

此方法可在蛋糕/库/模型/ model.php发现在线路2775

注意::此功能不工作,如果你运行插入查询手动

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top