このような他のモデルで現在のモデルの外部キー名を取得する方法はありますか
echo $this->Category->whatIsMyForeignKeyName();
// expected output 'category_id'
編集:バージョン
strtolower($this->Category->alias).'_id'
どういうわけかケーキの精神ではないようです。
このような他のモデルで現在のモデルの外部キー名を取得する方法はありますか
echo $this->Category->whatIsMyForeignKeyName();
// expected output 'category_id'
編集:バージョン
strtolower($this->Category->alias).'_id'
どういうわけかケーキの精神ではないようです。
同じ問題があり、別の方法で解決しました。
joshua.paling のソリューションは、デフォルトの外部キーを見つけます。とにかく、私はあなたがそれを一歩簡単に見つけることができると思います:
Inflector::underscore($baseModelName).'_id';
しかし、実際には、モデルは関連付けごとに異なる外部キーを持つ場合があります。「ベース」があり、多くの「関連」があると仮定しましょう (これらはモデルのダミー名です)。リレーションは「hasMany」リレーションです。
したがって、「ベース」モデルの定義は次のとおりです。
class Base extends AppModel {
public $hasMany = array(
'Associated'
);
}
「BaseController」では、これらのモデルをリンクする外部キーを次の方法で取得できます。
$this->Base->hasMany['Associated']['foreignKey']
これは、「関連付けられた」行をデータベース内の関連する「ベース」行にリンクするために使用される外部キーです。
この質問は1年以上前にすでに回答されていることを知っていますが、私の回答が他の人に役立つことを願っています:)