検索プラグインを使用して、検索機能のために CakePHP 1.3 バージョンを使用しています。
私は3つのモデルを持っています:
- デモ、
- 国
- 州
Demo
には 2 つの外部キーがあり、country_id
とstate_id
. State
は外部キーを持っていますcountry_id
。
私がやっていることは、国と州のテーブルからすべてのデータを取得する国と州のドロップダウンを持つ検索フォームがあることです。ドロップダウンから国を検索してフォームを送信すると、以下のエラーが表示されます。状態ドロップダウンのみを使用して検索すると、正しい結果が得られます。
検索クエリを実行すると、エラーが発生します
「列 '
country_id
' where 句があいまいです」
私のクエリは次のとおりです。
SELECT `Demo`.`id`, `Demo`.`demo2`, `Demo`.`desc`, `Demo`.`subject`, `Demo`.`gender`, `Demo`.`country_id`, `Demo`.`state_id`, `Demo`.`image_url`, `Country`.`id`, `Country`.`name`, `State`.`id`, `State`.`country_id`, `State`.`description` FROM `demos` AS `Demo` LEFT JOIN `countries` AS `Country` ON (`Demo`.`country_id` = `Country`.`id`) LEFT JOIN `states` AS `State` ON (`Demo`.`state_id` = `State`.`id`) WHERE `country_id` = 2
デモ テーブルのモデル関係:
var $belongsTo = array(
'Country' => array(
'className' => 'Country',
'foreignKey' => 'country_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'State' => array(
'className' => 'State',
'foreignKey' => 'state_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
);
ドロップダウンですべての国を取得するコントローラー クエリは次のとおりです。
$country=$this->Country->find('list'); //ドロップダウンで国のリストを表示するだけ
Country
クエリは、 ( )を除くすべてのフィールドからデータを検索します。これは、 table と table のどちらから探しているcountry_id
かがわからないためです。正しい結果を得るには、デモ テーブルの が必要です。country_id
Demo
State
country_id