3

私はケーキが初めてです。「ユーザー」と「プロファイル」のテーブル、コントローラー、モデル、ビューなど、いくつかの設定を行いました。私の見解では、値がtheで、オプションテキストが。でprofiles/addある入力を出力しようとしています。最終的に、値はに保存されます。selectuser.iduser.usernameuser.idprofile.user_id

私は多くのドキュメントを読み、テーブルselectからオプションを出力するように正常に設定しましたが、値とオプションテキストの両方としてを使用しています。useruser.id

コントローラ:

    $this->set('users', $this->Profile->User->find('list'));

意見:

    echo $this->Form->input('user_id');

この種のことは日常的なことのように思われるので、完全に見落としている場合は、ドキュメントへのリンクだけで自由に答えてください。

ありがとう!

4

1 に答える 1

6

ユーザーテーブルからオプションを出力するようにselectを正常に設定しましたが、値とオプションテキストの両方としてuser.idを使用しています。

find('list')デフォルトでは、主キーをキーとして使用し、モデルdisplayFieldを値として使用します。

モデルに明示的なものがないが、displayFieldという名前のフィールドがある場合、titleまたはnameCakeがこのフィールドを自動的に選択する場合、それ以外の場合は、主キーフィールドを推測せずに使用します。これは、問題で起こっていることです。

ただし、呼び出しの結果に必要なフィールドを指定するだけで済みますfind('list')。したがって、次のいずれかです。

モデルdisplayFieldを設定します

class User extends AppModel {

    public $displayField = 'username';

}

次に使用します:

$users = $this->User->find('list');

フィールドを明示的に選択する

$users = $this->User->find('list', array(
    'fields' => array('id', 'username')
));

どちらの場合も、結果は次のようになります。

array(
    1 => 'firstuser',
    ...
    76 => 'AD7six'
)
于 2013-03-17T22:36:35.290 に答える