2012-03-29 4 views
0

SiteaddressJobsheetの2つのテーブルがあります。 Jobsheetテーブルには、テーブルに格納されているサイトアドレスのIDを含むsiteaddressというフィールドがあります。CakePHPの指定フィールドを使用して2つのテーブルを結合する

私が午前問題は、私は、コントローラに参加やっている一方で、CakePHPは両方のテーブルのidフィールドを使用してJobsheetテーブルにSiteaddressテーブルを結合していることです。これは、Siteaddressテーブルに1つのレコード(これまで)しかなく、Jobsheetテーブルに複数のレコードがあるため、問題が発生します。

私がする必要があるのは、現時点での動作ではなく、Jobsheet.siteaddressからSiteaddress.idへの参加をCakePHPに伝えることです。

どうすればいいですか?

は以下Jobsheetモデルファイルから関係コードです:

public $hasOne = array(
    'Company' => array(
     'className' => 'Company', 
     'foreignKey' => 'id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ), 
    'Siteaddress' => array(
     'className' => 'Siteaddress', 
     'foreignKey' => 'id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ) 
); 

乾杯!

答えて

1

foreignKeyidに設定しているので、Cakeはこれを結合に使用します。このキーは、結合するテーブル内の任意のテーブルフィールドに設定できます。私が正しくあなたを理解していれば、あなたはsiteaddressforeignKeyを設定する必要があります。

'Siteaddress' => array(
    'className' => 'Siteaddress', 
    'foreignKey' => 'siteaddress', 
    'conditions' => '', 
    'fields' => '', 
    'order' => '' 
) 

同様hasOneためthe manual entryを参照してください。

EDIT:

この場合$belongsToは、協会として、より良いフィットかもしれません。

+0

私はそれを 'siteaddress'に設定しましたが、それでエラーが返されます:'列が見つかりません:1054不明な列 'on節'の 'Siteaddress.siteaddress' – mickburkejnr

+1

ああ、そうです。その場合、 'hasOne'はあなたが探している関連ではないかもしれません。 '$ belongsTo'の関連付けを' siteaddress'の 'foreignKey'で定義する方が良い選択かもしれません。 – mensch

+0

'$ belongsTo'を使用しました。どうもありがとう! – mickburkejnr

関連する問題