1

嘿有一个页面,允许企业向客户(个人和其他企业)发送发票。收件人输入字段允许用户选择将发票发送给哪个客户。目前下拉列表列出了企业,但我们希望该列表也包括个人(用户模型/表)。因此,如果帐户(帐户模型/表)没有 company_name,则显示用户的用户名。

以下是我试图让它工作的内容,没有给出错误,但没有在下拉列表中显示任何内容。我怎样才能实现我们想要的?

发票控制器:

$name = "";
if ('Account.company_name' != null) {
    $name = 'Account.company_name';
} else {
    $name = 'User.username';
}

$accounts2 = $this->User->find('list', array(
    'fields' => array('account_id'), 'conditions' => array(
        'id' => $this->Auth->user('id'))));

$accounts = $this->User->Relationship->find('list', array(
    'fields' => array('receiver_id'),
    'conditions' => array('sender_id' => $accounts2)));

$receivername = $this->Account->find('list', array(
    'fields' => array($name),
    'conditions' => array(
        'id' => $accounts)));

看法:

echo $this->Form->input('receiver_id', array(
    'label' => 'Receiver: ',
    'type' => 'select',
    'options' => $receivername));
4

2 回答 2

0
'Account.company_name' != null

显然总是正确的,因为字符串不为空。所以

if ('Account.company_name' != null) {
    $name = 'Account.company_name';
} else {
    $name = 'User.username';
}

总是做$name = 'Account.company_name';

于 2012-08-10T08:40:10.997 回答
0

您可以定义一个临时虚拟字段“display_name”和如下代码

$this->Account->virtualFields['display_name'] = "IF(Account.company_name='' OR Account.company_name IS NULL, (SELECT u.name FROM users u WHERE u.account_id = Account.id),Account.company_name)";

$list = $this->Account->find('list',array(
   'fields' => array('Account.id','Account.display_name')
));
于 2012-08-10T12:48:07.610 回答