2

このような他のモデルで現在のモデルの外部キー名を取得する方法はありますか

echo $this->Category->whatIsMyForeignKeyName();
// expected output 'category_id'

編集:バージョン

strtolower($this->Category->alias).'_id'

どういうわけかケーキの精神ではないようです。

4

3 に答える 3

0

同じ問題があり、別の方法で解決しました。

joshua.paling のソリューションは、デフォルトの外部キーを見つけます。とにかく、私はあなたがそれを一歩簡単に見つけることができると思います:

Inflector::underscore($baseModelName).'_id';

しかし、実際には、モデルは関連付けごとに異なる外部キーを持つ場合があります。「ベース」があり、多くの「関連」があると仮定しましょう (これらはモデルのダミー名です)。リレーションは「hasMany」リレーションです。

したがって、「ベース」モデルの定義は次のとおりです。

class Base extends AppModel {
  public $hasMany = array(
    'Associated'
  );
}

「BaseController」では、これらのモデルをリンクする外部キーを次の方法で取得できます。

$this->Base->hasMany['Associated']['foreignKey']

これは、「関連付けられた」行をデータベース内の関連する「ベース」行にリンクするために使用される外部キーです。

この質問は1年以上前にすでに回答されていることを知っていますが、私の回答が他の人に役立つことを願っています:)

于 2014-08-30T13:54:20.637 に答える