0

我在两个表(Contacts 和 Quotes)之间建立了关系设置,我正在尝试从 Contacts Quotes Controller 访问信息。所以在 QuoteController.php 我有以下代码:

 $contacts = $this->Quote->Contact->find('list', array('fields' => array(               
                    'Contact.id',
                    'Contact.name',
                    'Contact.company',              
                    'Contact.mainAddressLine2',
                    'Contact.mainAddressTown',
                    'Contact.mainAddressPostCode',
                    'Contact.mainAddressCountry'
            )));
            $this->set(compact('contacts'));

            echo '<pre>';
                print_r($contacts);
            echo '</pre>';

print_r 语句的输出是:

Array
(
    [1] => Joe Bloggs
    [21] => Jane Doe
)

正如你所看到的,我只得到了 id 和 name,出于某种原因,公司、mainAddressLine2 等正在通过数组。

最终,我希望用户能够从下拉列表中选择联系人姓名,然后将联系人表中的详细信息填充到报价视图中。

任何帮助表示赞赏。

4

2 回答 2

2

$this->Quote->Contact->find('list',只会渲染一维数组,将其更改为all而不是list. 您可能还想研究可包含的行为

btwpr($contacts);是 php 的内置便利功能

于 2013-06-11T20:24:38.643 回答
1

如果您希望列出所有字段,为什么不使用 find('all')。带有 2 个字段参数的查找列表将返回带有键-> 值的数组,而添加第三个字段将对结果进行分组。请参阅有关查找选项的文档

$contacts = $this->Quote->Contact->find('all', array('fields' => array(               
                    'Contact.id',
                    'Contact.name',
                    'Contact.company',              
                    'Contact.mainAddressLine2',
                    'Contact.mainAddressTown',
                    'Contact.mainAddressPostCode',
                    'Contact.mainAddressCountry'
            )));
            $this->set(compact('contacts'));

            echo '<pre>';
                print_r($contacts);
            echo '</pre>';
于 2013-06-11T20:48:19.607 回答