在CakePHP 3.0中,什么相当于从控制器内部调用getDataSource()
(如cakephp 2.x中的$this->ModelName->getDataSource()
)?
我试过这个:
use Cake\Datasource\ConnectionManager;
$conn = ConnectionManager::get('my_connection');
由于此连接已经连接,为什么我需要提供' my_connection'?
如何从CakePHP 3.0中的Controller内部获取DataSource?
由于
答案 0 :(得分:1)
添加了Database \ ConnectionManager :: get()。它取代了getDataSource()
CakePHP Cookbook 3
答案 1 :(得分:1)
开始,提交和回滚现在是连接上的函数,而不是数据源。使用$conn = ConnectionManager::get($connectionName)
,然后使用$conn->begin()
,$conn->commit()
和$conn->rollback()
。
http://book.cakephp.org/3.0/en/orm/database-basics.html#using-transactions
使用$this->Table->defaultConnectionName()
获取要传递的连接名称。
答案 2 :(得分:0)
" my_connection"应该在cakephp 3 config中定义 .go到cakephp / config / app.php
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
/**
* CakePHP will use the default DB port based on the driver selected
* MySQL on MAMP uses port 8889, MAMP users will want to uncomment
* the following line and set the port accordingly
*/
//'port' => 'non_standard_port_number',
'username' => 'root',
'password' => '',
'database' => 'cake',
'encoding' => 'utf8',
'timezone' => 'UTC',
'flags' => [],
'cacheMetadata' => true,
'log' => false,
连接名称是"默认"对于这种情况。
控制器中使用的每个模型都有一个Connection。 您可以通过此方法从模型中获取控制器中的连接。
$model=TableRegistry::get('table_name');
$connection = $model->connection();