Php 有很多人没有按照我想要的方式工作,尽管它应该这样做

Php 有很多人没有按照我想要的方式工作,尽管它应该这样做,php,cakephp,Php,Cakephp,我一直在努力学习关联,特别是通过cakephp文档,这是最适合我需要的 我有三张桌子 drugs id | drug 5 | reality records id | user_id | a-couple-misc-fields 1 | 1 | record_drugs id | drug_id | record_id 1 | 5 | 1 我还有3种型号 //Drug.php

我一直在努力学习关联,特别是通过cakephp文档,这是最适合我需要的

我有三张桌子

drugs
id      |  drug
5       | reality

records
id       | user_id | a-couple-misc-fields
1        |    1    |


record_drugs
id      | drug_id | record_id
1       |     5   |     1    
我还有3种型号

//Drug.php
public $hasMany = array('RecordDrug');

//Record.php
public $hasMany = array('RecordDrug');

//RecordDrug.php
public $belongsTo = array('Record', 'Drug');
在此之前,我只有一个表'记录'/strong>,而不是'药物id'只是'药物'/strong>,即'现实'/strong>'。这种方法显然有效,但我知道这种方法从长远来看是行不通的

我的老问题

$records=$this->Record->find('list', 
        array('fields' => array('drug', 'sum'),
            'group'  => 'drug',
            'conditions' => array('user_id' => $this->Auth->user('id'))));
如果我运行完全相同的查询并使用“drug\u id”而不是“drug”,我只会得到一个如下的数组:

'5' => '1' // The Drug => The Count of the Drug
'Reality' => '1'
但我需要它像这样显示:

'5' => '1' // The Drug => The Count of the Drug
'Reality' => '1'
我理解如果这个问题很复杂,需要帮助,但如果任何人有任何资源或链接,我可以查找,将有助于我与这一点,这将是惊人的!谷歌搜索的结果只是告诉我如何设置连接模型,而不是如何实际使用它和检索数据

编辑:

    $this->loadModel('RecordDrug');
    $this->RecordDrug->virtualFields['sum'] ='COUNT(*)';
    $records=$this->RecordDrug->find('list', 
        array('fields' => array('drug_id', 'sum'),
            'group'  => 'drug_id'
            ));
    $this->set('output',$records); 
    debug($records);
这主要是给我我想要的

array(
(int) 1 => '1',
(int) 2 => '2'
)
我现在唯一需要做的就是找出如何将第一个值更改为与id关联的实际“药物”

回答

因此,让我试着将药物id与实际药物联系起来,以下是我如何使其正确显示的:

    $this->RecordDrug->virtualFields['sum'] ='COUNT(*)';
    $records=$this->RecordDrug->find('list', 
        array('fields' => array( 'Drug.drug', 'sum'),
            'contain' => array('Drug', 'Record'), //Record is only here if you need the condition, you can remove record complete and the condition completely and it'll still work, but it'll give you ALL the results rather then just yours 
            'group'  => 'Drug.Drug',
            'conditions' => array('Record.user_id' => $this->Auth->user('id'))
            ));   

首先,我很难找到正确的数据库结构。记录表将有一个drug_id字段,该字段将链接到“drugs”表中的“id”字段,然后选择与id关联的“Druge”字段值。否,这是不正确的。这里有一个例子。用户可以提交相同或不同药物的多个记录。另一方面,同一个人或不同的人可以多次使用药物。这更有意义吗?好吧,我这么做了,现在我的查询基本上成功了(我更新了原来的帖子)。我将尝试和谷歌的解决方案,谢谢你的帮助!我解决了这个问题。对于任何有相同问题的人,我将在主要问题中添加解决方案。这很好:)我将在这里删除我的评论,因为编辑您解决了这个问题。把它作为一个答案,然后接受它,这样每个人都知道你已经解决了它。