0

GamebelongsToTypeという関係があります。ゲームの追加ビューに、さまざまなタイプのドロップダウンリストが表示されます。タイトルはテーブルのVARCHARです。しかし、1つを選択して保存を押すと、タイトルの代わりにタイプのIDが保存されます(ドロップダウンリストでタイトルを選択しました。PHPmyAdminでゲームを作成すると、すべてが正常に機能します。私のコード:

GameModel

class Game extends AppModel {

    public $name = 'Game';
    public $primaryKey = 'id';
    public $belongsTo =  array

     (
  'Type' => array (
        'className' => 'Type',
        'foreignKey' => 'type_id'
     ));

GameControllerに関数を追加します

 public function add() {
$types = $this->Game->Type->find('list',array('fields' => array('title')));
$this->set('types',$types);

    if ($this->request->is('game')) {
        if ($this->Game->save($this->request->data)) {
            $this->Session->setFlash('Your game has been created.');
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash('Unable to add your game.');
        }
    }
} 

タイプのビューを追加

    <h1>Add Game</h1>
<?php
echo $this->Form->create('Game',array('action' => 'edit'));
echo $this->Form->input('tablename',array('rows' => '1'));
echo $this->Form->input('date');
echo $this->Form->input('type_id');
echo $this->Form->end('Save Games');
?>

誰かが解決策を見つけられることを願っています。さらに情報が必要な場合は、plsは遠慮なく質問してください。

よろしくお願いいたします。

4

1 に答える 1

0
//Add function in your controller

$types= $this->Game->find('list', array(
    'conditions' => array('Game.type_id'),
    'fields'     => array('Game.id', 'Game.title')
));
$this->set(compact('types'));

// view
echo $this->Form->input('type_id', array(
    'type'    => 'select',
    'options' => $types,
    'empty'   => false
));
于 2012-04-30T21:45:31.983 に答える