我的意思是,在某个地方必须有一个初始化的PDO对象,我想使用它,而不是创建一个并行连接。
应要求,以下是它背后的故事:我正在制作一个注册表单,它保存到两个模型(Firms和Users)中,它们之间有一个HABTM连接。CakePHP不能在这个表单中使用HABTM,所以在不破坏模型的情况下,我不得不这样做:
if ($this->request->is('post')) {
$this->Firm->create();
if ($this->Firm->saveAll($this->request->data)) {
for($i=0; $i<count($this->request->data['User']); $i++){ //működik :)
$this->User->create(); // ?
$a = $this->request->data['User'][$i];
$b = randomString(28);
$a['password'] = $b;
$a['plain_password'] = $b;
if($this->User->save($a)){
$this->Session->setFlash(__('The firm and a user have been saved.')); // no good
}
}
//$this->Session->setFlash(__('The firm has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The firm could not be saved. Please, try again.'));
}
我只想做一个查询,比如INSERT INTO firms_users (user_id,firm_id) VALUES ($u,$f)
,因为这是模型不能为我做的,因为HABTM。
如果使用事务来完成这一点就太好了,但是我想,使用cakePHP标准,这是根本不可能的。
2条答案
按热度按时间iq3niunx1#
访问数据源
您可以使用Model::getDataSource()来存取模型的数据来源。
另请参阅:http://book.cakephp.org/2.0/en/models/datasources.html
运行手动查询
如果要运行手动查询而不使用Cake的内置模型查询方法和关系,可以执行以下操作:
请记住,此处的数据不受SQL注入的保护。
交易记录
我刚刚看到了你的编辑想要运行一个事务。是的,你可以用Cake来做这个。一个模型的数据源对象有这样的方法。你只需要在你的查询中涉及到的任何一个模型上开始事务。
http://book.cakephp.org/2.0/en/models/transactions.html
68bkxrlz2#
您可以从任何地方访问数据库连接的PDO对象。(使用“默认”DB概要文件或替换为不同的DB概要文件。)
CakePHP 2示例:
CakePHP 3示例: