我正在使用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