【问题标题】:CakePHP not setting the $this->Model->id variableCakePHP 没有设置 $this->Model->id 变量
【发布时间】:2011-03-17 05:09:53
【问题描述】:

我目前正在尝试使用以下方法访问刚刚插入的数据:

if($this->User->save($this->data))
{
    $user_id = $this->User->id;    #119
    ...

但我得到了错误:

Notice (8): Undefined index:  id [APP/controllers/users_controller.php, line 119]
Code | Context
if($this->User->save($this->data))
{
    $user_id = $this->data['User']['id'];

不明白为什么保存成功,但是id没有设置?

编辑:
所以问题是因为我使用的数据库关系迫使我的读取从多个表中返回数据,它最终从多个表中返回数据,所以我真正要做的是:

$user = $this->User->read();
$id = $user['User']['id'];

而不是:

$user = $this->User->read();
$id = $user['id'];

【问题讨论】:

  • 你在if语句之前检查过$this->data的内容吗?用var_dump($this->data)
  • 在if之前设置了变量,除了ID。在if之后,变量仍然设置,除了ID,应该由insert设置。
  • OIC,问题似乎是模型没有从数据库中重新加载数据。正确的?从技术上讲,您不是要访问刚刚插入的数据,而是要访问由数据库作为插入结果创建的数据。我不熟悉 CakePHP,但我不希望它自己这样做。我希望必须从数据库中重新加载该数据。

标签: php cakephp variable-assignment


【解决方案1】:

要获取此模型插入的最后一条记录的 ID,您应该使用

$this->User->getLastInsertID();

通常$this->User->id 用于让某个动作知道它应该处理哪条记录,你不能使用它从数据库中检索数据。

【讨论】:

    【解决方案2】:

    是的,$model->data['Model']['id'] 在保存数据时不会更新。只有$model->id 是。仅此而已。

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多