来自不同数据源的具有相同 table 名称的 CakePHP 3 烘焙模型
CakePHP 3 bake model with same table name from different datasource
我正在使用 CakePHP 3
。
我有不同的来源要使用,每个都有不同的 users
table。
简而言之,我正在创建一个主面板来管理来自所有其他应用程序的用户。
当我从不同的连接烘烤 users
table 时
bin/cake bake model users -c my_con
它要求覆盖之前烘焙的 users
模型。
如何烘焙 table 来自不同来源的相同名称?可能在不同的命名空间下。
并且不可能得到哪个索引代表哪个列。
如何将数据映射到 table 的列名?
您可以使用不同的模型名称,并通过 --table
选项显式传递数据库名称,例如:
bin/cake bake model UsersAlias --table users -c my_con
无法直接使用不同的命名空间,因为 models/tablesBake 仅支持将文件创建到插件中,那将是一个不同的命名空间,但您当然需要为每个源创建一个单独的插件,这可能有点过头了。
和fetchAll()
has one argument that accepts the fetch type as a string, 'assoc'
, 'obj'
, or 'num'
(default), also available as constants on \Cake\Database\Statement\PDOStatement
:
$result = $query->fetchAll(\Cake\Database\Statement\PDOStatement::FETCH_TYPE_ASSOC);
我正在使用 CakePHP 3
。
我有不同的来源要使用,每个都有不同的 users
table。
简而言之,我正在创建一个主面板来管理来自所有其他应用程序的用户。
当我从不同的连接烘烤 users
table 时
bin/cake bake model users -c my_con
它要求覆盖之前烘焙的 users
模型。
如何烘焙 table 来自不同来源的相同名称?可能在不同的命名空间下。
并且不可能得到哪个索引代表哪个列。
如何将数据映射到 table 的列名?
您可以使用不同的模型名称,并通过 --table
选项显式传递数据库名称,例如:
bin/cake bake model UsersAlias --table users -c my_con
无法直接使用不同的命名空间,因为 models/tablesBake 仅支持将文件创建到插件中,那将是一个不同的命名空间,但您当然需要为每个源创建一个单独的插件,这可能有点过头了。
和fetchAll()
has one argument that accepts the fetch type as a string, 'assoc'
, 'obj'
, or 'num'
(default), also available as constants on \Cake\Database\Statement\PDOStatement
:
$result = $query->fetchAll(\Cake\Database\Statement\PDOStatement::FETCH_TYPE_ASSOC);