没有表名的 Cakephp db 查询结果,只是像 MySQL 中的普通结果?

Posted

技术标签:

【中文标题】没有表名的 Cakephp db 查询结果,只是像 MySQL 中的普通结果?【英文标题】:Cakephp db query result without tables's names, just plain result as in MySQL? 【发布时间】:2015-04-24 00:48:48 【问题描述】:

我正在使用 cakephp,我有一个模型

$db = $this->getDataSource();
$result = $db->fetchAll(
        'SELECT table1.id, 
            table1.title, 
            table1.buy_url, 
            table2.image_file as image, 
            table3.category_id as maincategory, 
            (table4.user_id = "71") AS isfavorite
        FROM table1
        INNER JOIN ...
        LEFT JOIN ...
        LEFT JOIN ...
        where ...);

    return $result;

我得到这样的结果:


  "table1": 
    "id": "132",
    "title": "Awesome",
  ,
  "table2": 
    "image": "image_25398457.jpg"
  ,
  "table3": 
    "maincategory": "3"
  ,
  "table4": 
    "isfavorite": "1"
  

但我不想显示表格的名称,我希望通过以下方式获得结果:


    "id": "132",
    "title": "Awesome",
    "image": "image_25398457.jpg"
    "maincategory": "3"
    "isfavorite": "1"
   

我怎样才能做到这一点?

谢谢!

【问题讨论】:

【参考方案1】:

据我所知,结果是按表名分组的。

最简单的选择是:

$merged = call_user_func_array('array_merge', $result);

另一种选择是:

$db = $this->getDataSource();
$result = $db->fetchAll(
    'SELECT * FROM (
        SELECT table1.id, 
            table1.title, 
            table1.buy_url, 
            table2.image_file as image, 
            table3.category_id as maincategory, 
            (table4.user_id = "71") AS isfavorite
        FROM table1
        INNER JOIN ...
        LEFT JOIN ...
        LEFT JOIN ...
        where ... '
    ) as final_table
);

return $result;

这就是为什么你只会有类似的东西:


   "final_table" : 
       "id": "132",
       "title": "Awesome",
       "image": "image_25398457.jpg"
       "maincategory": "3"
       "isfavorite": "1"
   
 

【讨论】:

以上是关于没有表名的 Cakephp db 查询结果,只是像 MySQL 中的普通结果?的主要内容,如果未能解决你的问题,请参考以下文章

Fmdb 选择带有变量表名的查询

在 Zend Framework 中使用 Zend_Db_Table 的 CakePHP 风格的数据库查询结果?

如何在 PostgreSQL 中仅获取数据库的表名

cakephp 3.x datetime字段比较查询中没有返回正确的结果

从 PersistEntity/PersistField 映射到 DB 中的列名和表名的规则是啥

将表名的“字段”添加到来自 UNION 的 SQL 结果?