如何在cakephp中获取最后一个id

时间:2013-12-20 09:37:37

标签: cakephp

我在cakephp中使用查询

$this->Menu->query("INSERT INTO frd_menus SET menuName= '".$_REQUEST['menuname']."'");

如何在cakephp中获取此查询的最后一个插入ID?请指教。

11 个答案:

答案 0 :(得分:19)

如果没有具体原因。

你应该使用

$this->Menu->save($data)

插入数据。 然后你可以使用

$this->Menu->getLastInsertId();

获取最后插入的ID。

答案 1 :(得分:11)

在大多数情况下,您应该使用模型方法来查询数据库。

Model::query()用于运行比使用模型方法更复杂的复杂查询,或者在您无法选择的情况下运行。

在您的情况下,这非常有用,因为Model::save()在框架中运行回调,为您设置Model::id属性。

所以,这允许你立即取回它:

if ($this->Menu->save($data)) {
   $lastId = $this->Menu->id;
}
  

小心!

     

另一方面,如其他回应所说,有以下方法:

Model::getLastInsertId()
     

但是你必须非常小心这种方法你不应该在这种情况下使用因为它插入 LAST ,但不是您刚刚在上一个代码语句中插入的最后一个!

     

如果用户(在服务器上的另一个并发请求期间)在save()getLastInsertId()之间保存数据,将返回第二个用户的数据!

     

那么,以下答案为 BAD 答案此用例

     

答案 2 :(得分:4)

$this->Menu->getLastInsertId();

您可以通过此

获取最后一个插入ID

答案 3 :(得分:4)

在cakephp中使用orderby desc选项。

$lastCreated = $this->Menu->find('first', array('order' => array('Menu.filedname' =>'desc'))`);

答案 4 :(得分:3)

您可以尝试:

$data = array('menuName' => $_REQUEST['menuname'])
$this->Menu->create();
$this->Menu->save($data);
$id = $this->Menu->getLastInsertId();

答案 5 :(得分:2)

很简单。就这么做。

$this->Menu->save($newMenu);
$menuId = $this->Menu->id;

答案 6 :(得分:2)

试试这个

$this->ModelName->save($this->request->data);
$insertedId = $this->ModelName->id;

答案 7 :(得分:1)

$this->Menu->query("INSERT INTO frd_menus SET menuName= '".$_REQUEST['menuname']."'");
$result = $this->Menu->query("SELECT LAST_INSERT_ID()");
$last_id = $result[0][0];

这应该有效,但我认为如果您在menusfrd_menus之间建立关系并使用save函数

会更好

答案 8 :(得分:0)

CakePHP 3.x 中,您可以这样做:

    @Component
    public class userPasswordResetJob{

        @Autowired
        private UserLoginFailureRepository userLoginFailureRepository;

        @Autowired
        private UserRepostory userRepository;

        @Scheduled(cron = "${USER_STATUS_JOB}")
        public void loginDay() throws Exception{
            // Have your logic to update the User status and reset the failure count.

        }
    }

答案 9 :(得分:-1)

$this->Menu->id; // For User Model

您也可以使用Model函数,但是下面的代码将返回给定模型名称的模型的最后插入ID,对于此示例,它将返回Menu模型数据

$this->Menu->getLastInsertId();
$this->Menu->getInsertID();

答案 10 :(得分:-1)

以下是选项:

echo $this->Registration->id;

OR

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

OR

echo $this->Registration->getLastInsertId();

在此,您可以使用型号名称替换注册。

注意:如果您手动运行插入查询,则此功能不起作用

由于