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

文字列はnullではないため、明らかに常にtrueです。それで

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 に答える