我也检查过this个问题和this个问题。我正在尝试实现this问题中描述的模型。
我想要做的是,在消息控制器的add函数中,在线程表中创建一条记录(该表只有1个字段,即主键和自动增量),然后获取其id并将其插入到消息中table以及我已经拥有的用户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。我有什么方法可以获得身份证,或者我是否错误地保存了它?
最初我在消息控制器中进行查询:
$this->Thread->query('INSERT INTO threads VALUES();');
但后来我发现lastId函数不能用于手动查询,所以我还原了。
答案 0 :(得分:1)
您将$data
基本上设置为ID为' '
的空数组。不确定你的期望是什么。 :)尝试不要手动将'id'设置为空字符串,并保存一些数据。然后你应该得到这个ID。
答案 1 :(得分:0)
这里返回下一个自动增量值。
/* @return int */
private function getNextThreadId() {
$result = $this->Thread->query("SHOW TABLE STATUS LIKE 'threads';");
$next = $result[0]['TABLES']['Auto_increment'];
return $next;
}
线程 - >或您的模型的任何其他名称
主题 - >或者db表的任何其他名称