zend 框架 - sql 查询的结果数组可以包含数据库名称吗?
zend framework - can result array from sql query contain database names?
如果我们 运行 查询如下:
SELECT `user`.`user_id`
, `user`.`username`
, `profile`.`user_id`
, `profile`.`name`
, `profile`.`location`
FROM `user`
JOIN `profile`
USING (`user_id`)
WHERE `user`.`user_id` = 1;
然后我们得到结果集:
object(ArrayObject)
private 'storage' =>
array
'user_id' => string '1'
'username' => string 'ExampleUsername'
'name' => string 'Example name'
'location' => string 'Example location'
请注意 user_id
字段仅 return 编辑一次,即使它在 SQL 查询中存在两次。
有没有办法将 return table 名称作为结果集的一部分?例如,需要以下结果集:
object(ArrayObject)
private 'storage' =>
array
'user' => array
'user_id' => string '1'
'username' => string 'ExampleUsername'
'profile' => array
'user_id' => string '1'
'name' => string 'Example name'
'location' => string 'Example location'
我在其他框架(Laravel、CodeIgniter)中看到过此操作,但没有看到 Zend Framework 版本 2 或 3 的选项。
这只是一个示例 SQL 查询。我们在我们的项目中 运行ning 更复杂的查询,其中 returned 关联数组以 table 名称作为键是理想的。
我想你的意思是你希望键包含 table 名称,而不是数据库名称。
IIRC Zend Framework 中没有执行此操作的内置方法。
您可以使每个键都不同,但这取决于您通过定义列别名来实现:
SELECT `user`.`user_id` AS user_user_id
, `user`.`username`
, `profile`.`user_id` AS profile_user_id
, `profile`.`name`
, `profile`.`location`
FROM `user`
JOIN `profile`
USING (`user_id`)
WHERE `user`.`user_id` = 1;
这是 return 导致关联数组的任何数据库库的常见问题,不仅仅是 Zend Framework,甚至不仅仅是 PHP。
你展示的第二个例子,将列提取到某种由 tables 分解的嵌套数据结构中,在我使用过的任何数据库库中都不支持。 return 下列查询的结果如何?
SELECT user.user_views + profile.profile_views AS total_views
FROM user JOIN profile USING (user_id)
total_views
属于 user
键还是 profile
键?
还有许多其他类似的 SQL 查询示例,return 结果并不严格 "belong" 到任何一个连接的 table。
如果我们 运行 查询如下:
SELECT `user`.`user_id`
, `user`.`username`
, `profile`.`user_id`
, `profile`.`name`
, `profile`.`location`
FROM `user`
JOIN `profile`
USING (`user_id`)
WHERE `user`.`user_id` = 1;
然后我们得到结果集:
object(ArrayObject)
private 'storage' =>
array
'user_id' => string '1'
'username' => string 'ExampleUsername'
'name' => string 'Example name'
'location' => string 'Example location'
请注意 user_id
字段仅 return 编辑一次,即使它在 SQL 查询中存在两次。
有没有办法将 return table 名称作为结果集的一部分?例如,需要以下结果集:
object(ArrayObject)
private 'storage' =>
array
'user' => array
'user_id' => string '1'
'username' => string 'ExampleUsername'
'profile' => array
'user_id' => string '1'
'name' => string 'Example name'
'location' => string 'Example location'
我在其他框架(Laravel、CodeIgniter)中看到过此操作,但没有看到 Zend Framework 版本 2 或 3 的选项。
这只是一个示例 SQL 查询。我们在我们的项目中 运行ning 更复杂的查询,其中 returned 关联数组以 table 名称作为键是理想的。
我想你的意思是你希望键包含 table 名称,而不是数据库名称。
IIRC Zend Framework 中没有执行此操作的内置方法。
您可以使每个键都不同,但这取决于您通过定义列别名来实现:
SELECT `user`.`user_id` AS user_user_id
, `user`.`username`
, `profile`.`user_id` AS profile_user_id
, `profile`.`name`
, `profile`.`location`
FROM `user`
JOIN `profile`
USING (`user_id`)
WHERE `user`.`user_id` = 1;
这是 return 导致关联数组的任何数据库库的常见问题,不仅仅是 Zend Framework,甚至不仅仅是 PHP。
你展示的第二个例子,将列提取到某种由 tables 分解的嵌套数据结构中,在我使用过的任何数据库库中都不支持。 return 下列查询的结果如何?
SELECT user.user_views + profile.profile_views AS total_views
FROM user JOIN profile USING (user_id)
total_views
属于 user
键还是 profile
键?
还有许多其他类似的 SQL 查询示例,return 结果并不严格 "belong" 到任何一个连接的 table。