0

我也检查了这个问题和这个问题。我正在尝试实现这个问题中描述的模型。

我想要做的是,在消息控制器的添加功能上,在线程表中创建一条记录(该表只有一个主键和自动增量字段),然后将其 id 插入到消息表中我已经拥有的用户 ID,然后将其保存在 message_read_state 和 thread_participant 表中。

这就是我在线程模型中尝试做的事情:

function saveThreadAndGetId(){
    //$data= array('Thread' => array());
    $data= array('id' => ' ');
   //Debugger::dump(print_r($data));
   $this->save($data);
   debug('id: '.$this->id);
    $threadId = $this->getInsertID();
    debug($threadId);
    $threadId = $this->getLastInsertId();
    debug($threadId);
    die();
    return $threadId;
}


$data= array('id' => ' ');

上述函数中的这一行在线程表中添加了一行,但我无法检索 id。有什么办法可以获取id,还是我保存错误?

最初我在消息控制器中做查询:

$this->Thread->query('INSERT INTO threads VALUES();');

但后来我发现 lastId 函数不适用于手动查询,所以我恢复了。

4

2 回答 2

1

您设置$data为基本上是一个空数组,其 id 为' '. 不确定您对此有何期待。:) 尝试不要手动将“id”设置为空字符串,并保存一些数据。那么你应该得到ID就好了。

于 2012-11-01T20:33:51.167 回答
0

这里返回下一个自动增量值。

/* @return int */
private function getNextThreadId() {
    $result = $this->Thread->query("SHOW TABLE STATUS LIKE 'threads';");
    $next = $result[0]['TABLES']['Auto_increment'];
    return $next;
}

Thread -> 或您模型的任何其他名称

线程 -> 或您的数据库表的任何其他名称

于 2012-11-02T22:53:35.160 回答