我正在使用php.activerecord,我試圖鏈接兩個表。與自定義表和鍵名稱的模型關聯
我有contacts
和contactCompanyLinks
。每個聯繫人可以在鏈接表中包含一個或多個行。表中的字段名稱不遵循任何明智的約定,但我無法更改它,因爲它會使用同一個表破壞另一個應用程序。
contacts
的主鍵被稱爲contactID
,而contactCompanyLinks
中的外鍵被稱爲inspectorID
。
php.activerecord造成太多假設,我無法弄清楚如何讓它將我的表連接在一起。
這裏是我的模型:
Contact.php
:
<?php
class Contact extends ActiveRecord\Model {
static $primary_key = 'contactID';
static $has_many = array(
array(
'contactCompanyLinks',
'class_name' => 'ContactCompanyLink',
'foreign_key' => 'inspectorID'
)
);
}
ContactCompanyLink.php
:
<?php
class ContactCompanyLink extends ActiveRecord\Model {
static $table_name = 'contactCompanyLinks';
static $belongs_to = array(
array('contact')
);
}
這看起來正確的,但是當我試圖讓一排,它不工作。我做了以下:
<?php
var_dump(Contact::find(1234)->contactcompanylinks);
我打印到屏幕上的所有是NULL
!如果我嘗試其他屬性,如contactcompanylink
或ContactCompanyLink
或ContactCompanyLinks
,我收到了「未定義的屬性」錯誤。
var_dump(Contact::find(1234)
工作得很好。它向我展示了contacts
表中的字段。
如何告訴php.activerecord在我試圖告訴它如何將兩個表連接在一起時停止假設並聽取我的意見?
你說的是'var_dump''find'的結果,它工作得很好。將結果存儲在變量中並運行「contactcompanylinks」函數後會發生什麼?我認爲沒有什麼會因爲PHP的工作原理而改變,但我遇到了怪異的東西。 – Jelmer
@Jelmer:這是一個很好的想法,但它不會改變任何事情。而且''find'本身工作正常,但只返回來自'contacts'的行。 –
當你擴展你定義的'belongs_to'與模型的foreign_key綁定的數組時會發生什麼?我從來沒有使用ActiveRecord,但我知道在CakePHP中可以定義'foreign_key'。它看起來像相同的結構。你嘗試過嗎?在這裏我看到他們做了這樣的事情。 http://www.phpactiverecord.org/docs/ActiveRecord/Model – Jelmer