【发布时间】:2016-10-15 05:05:49
【问题描述】:
自从今天早上以来,我面临着一个非常大的问题。我正在使用 CodeIgniter 开发网站,并使用 GAS ORM 开发数据库。 我基本上有两张桌子。一个名为“pool”,一个名为“partners”。我在这两个表之间有两个关联,所以我的表 Partners 中有两个外键引用表池。
池(#id:整数,名称:varchar) 合作伙伴(#id:integer, associated_pool_id=>Pool, futur_associated_pool_id=>Pool)。
因为我有两个对同一个表的引用,所以我不能将外键命名为“pool_id”。所以在我与 Gas ORM 的关系中,我必须指定列的名称。我这样做了,但它不起作用...... 这是我的工作:
class Partner extends ORM {
public $primary_key = 'id';
public $foreign_key = array('\\Model\\Pool' => 'associated_pool_id', '\\Model\\Pool' => 'future_associated_pool_id');
function _init()
{
// Relationship definition
self::$relationships = array(
'associated_pool' => ORM::belongs_to('\\Model\\Pool'),
'future_association_pool' => ORM::belongs_to('\\Model\\Pool'),
);
self::$fields = array(
'id' => ORM::field('auto[11]'),
'name' => ORM::field('char[255]'),
'associated_pool_id' => ORM::field('int[11]'),
'future_associated_pool_id' => ORM::field('int[11]')
);
}
在我的 Pool 课中:
class Pool extends ORM {
public $primary_key = 'id';
function _init()
{
// Relationship definition
self::$relationships = array(
'associated_partner' => ORM::has_many('\\Model\\Partner'),
'future_associated_partner' => ORM::has_many('\\Model\\Partner'),
);
self::$fields = array(
'id' => ORM::field('auto[11]'),
'name' => ORM::field('char[50]'),
);
}
我有一个测试控制器测试一切是否正常:
class Welcome extends CI_Controller {
public function index()
{
$pool = \Model\Pool::find(1);
echo $pool->name;
$partners = $pool->associated_partner();
var_dump($partners);
}
但我有一个错误说:
错误号:1054
Champ 'partner.pool_id' inconnu dans where 子句
从partner 中选择 * partner.pool_id IN (1)
我不知道如何向 Gas ORM 指定它不应该采用“pool_id”而是“associated_pool_id”......
谢谢你的帮助!!!!!!!!!!!!
【问题讨论】:
标签: mysql sql codeigniter orm foreign-keys