2015年12月25日金曜日

Cakephp : 複数の外部キーの設定

Cakephpで複数の外部キーを設定するときのメモ。
複数の外部キーといっても、同じテーブルに他の同じテーブルの外部キーを複数設定する場合です。つまり、operationsテーブルに2つのoperatorsテーブルのキーがある場合、(operator_id、evaluator_id)をoperationsテーブルに設定します。複数あるので、外部キーと自動的に認識してくれません(ViewではそのままIDとして表示)。

1. Operationsテーブルのモデルに設定
app]$ vi Model/Operation.php

var $belongsTo = array(
                'Operator' =>array('className' => 'Operator','foreignKey' => 'operator'),
                'Evaluator' =>array('className' => 'Operator','foreignKey' => 'evaluator')
        );


あとはもう一度operationsテーブルのviewだけbakeしとけば、認識されるようになります。

2015/12/25追記
2.リレーション側でのbake
OperatorとEvaluatorキーを使う側のbakeではリレーションが自動認識されないので、自分で設定する必要があります。ひとまずOperatorキーがリレーションとして認識されたかったので設定しました。Operatorsテーブルのbakeです。
このあとC,Vと続けてBakeします。

参考
http://www.asterisk-works.jp/wiki/index.php/Bake%E3%83%A1%E3%83%A2

0 件のコメント:

コメントを投稿