0

テーブル Cs_grpusu は、私のオフィスのエリアを指定します。テーブル Users には Cs_grpusu への外部キーがあります

Cs_grpusu モデル (cs_grpusu.php):

<?php
class CsGrpusu extends AppModel {
    var $name = 'Cs_grpusu';
    var $useTable = 'Cs_grpusu';
    var $primaryKey = 'grpusu';
    var $displayField = 'desgrp';
}
?>

Cs_grpusu コントローラー (cs_grpusus_controller.php):

<?php
class CsGrpususController extends AppController {
    var $uses = 'Cs_gprusu';
}
?>

Cs_grpusu テーブルの内容: 表の内容

そして、私のユーザーモデルでは、これを設定しました:

var $belongsTo = array(        
    'Cs_grpusu' => array(           
        'className'    => 'cs_grpusu',            
        'foreignKey'    => 'area'        
    )    
); 

次に、これらの領域を User add.ctp ビュー フォームに配置します。

echo $form->input('area',array('type' => 'select','options'=>$group));

今までは大丈夫だと思っていました。今問題。ユーザーコントローラーで「グループ」を次のように入力した場合:

$this->set('grupos',$this->User->Cs_grpusu->find('all'));

選択ボックスのオプションが次のように奇妙になりました (そして、デバッグすると、次に説明するエラーが表示されます)。

変なセレクトボックス

さて、次のようにグループ変数を埋めようとすると:

$this->set('grupos',$this->User->Cs_grpusu->find('list', array('fields'=>array('Cs_grpusu.grpusu','Cs_grpusu.desgrp'))));

選択ボックスにオプションが表示されず、次のエラーも表示されます。

Notice (8): Undefined index: cs_grpusu [CORE\cake\libs\model\datasources\dbo\dbo_firebird.php, line 455]

CONTEXT

$results    =   resource
$num_fields =   2
$index  =   1
$j  =   0
$column =   array(
    "GRPUSU",
    "name" => "GRPUSU",
    "GRPUSU",
    "alias" => "GRPUSU",
    "CS_GRPUSU",
    "relation" => "CS_GRPUSU",
    "2",
    "length" => "2",
    "SMALLINT",
    "type" => "SMALLINT"
)

CODE:

$column = ibase_field_info($results, $j);
            if (!empty($column[2])) {
                $this->map[$index++] = array(ucfirst(strtolower($this->modeltmp[strtolower($column[2])])), strtolower($column[1]));

では、選択ボックスに「レセプション、予算...」というオプションのみを表示するには、これらの奇妙な数字がなく、未定義のインデックスエラーが発生しないようにするにはどうすればよいですか?

ありがとう!!

4

1 に答える 1

2

モデル クラスに「Cs_grpusu」という名前を付けることは、最初に犯す間違いです。「CsGrpusu」にする必要があります。すべてのクラス名は、CakePHP では CamelCased です。ファイルとクラスの命名規則に関するマニュアルを読んでください。

于 2012-09-30T21:07:11.870 に答える