2012-03-29 107 views
0

我有兩個表格,分別叫做SiteaddressJobsheet。在Jobsheet表中有一個名爲siteaddress的字段,其中包含存儲在Siteaddress表中的站點地址的ID。使用CakePHP中的指定字段加入兩個表格

我遇到的問題是,雖然我做的控制器聯接,CakePHP會使用兩個表中的id領域加入Siteaddress表到Jobsheet表。這會導致問題,因爲Siteaddress表中只有一條記錄(迄今爲止),並且Jobsheet表中有多條記錄。

我需要做的是告訴CakePHP加入Jobsheet.siteaddressSiteaddress.id,而不是它目前的工作方式。

我該如何做到這一點?

下面是關係代碼從Jobsheet模型文件:

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

乾杯!

回答

1

您已將foreignKey設置爲id,以便Cake使用此功能進行連接。該鍵可以設置爲您想要加入的表中的任何表格字段。如果我理解正確的話,你應該設置foreignKeysiteaddress

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

the manual entryhasOne爲好。

編輯:

在這種情況下$belongsTo可能是一個更適合作爲一個協會。

+0

我已將它設置爲'siteaddress',但它隨後返回錯誤:'找不到列:'on'子句'中的1054未知列'Siteaddress.siteaddress' – mickburkejnr 2012-03-29 09:03:20

+1

啊,你說得對。在這種情況下'hasOne'可能不是您要找的關聯。用'siteaddress'' foreignKey'定義'$ belongsTo'關聯可能是一個更好的選擇。 – mensch 2012-03-29 09:13:37

+0

使用'$ belongsTo'工作。非常感謝! – mickburkejnr 2012-03-29 11:52:00