Php 与非主键的Yii关系
我有一个mysql表和一个mysql视图,我正试图为它们建立关系 各委员的名单如下:Php 与非主键的Yii关系,php,yii,Php,Yii,我有一个mysql表和一个mysql视图,我正试图为它们建立关系 各委员的名单如下: --commissions-- id(primary Key) date_added order_id salesrep_id customer_id commission_total status --rep_view_customer-- entity_id email first_name last_name company viewrep_view_客户如下所示: --commissions-- i
--commissions--
id(primary Key)
date_added
order_id
salesrep_id
customer_id
commission_total
status
--rep_view_customer--
entity_id
email
first_name
last_name
company
viewrep_view_客户如下所示:
--commissions--
id(primary Key)
date_added
order_id
salesrep_id
customer_id
commission_total
status
--rep_view_customer--
entity_id
email
first_name
last_name
company
我正在尝试将rep_view_customer与佣金相关。customer_id=rep_view_customer.entity_id
我已尝试使用on选项:
'rep_view_customer' => array(self::HAS_ONE, 'RepViewCustomer', '', 'on'=>'rep_view_customer.entity_id = t.customer_id')
我还尝试使用以下方法设置rep_view_客户模型的主键:
public function primaryKey(){
return 'entity_id';
}
但我似乎总是以类似以下的错误结束:
CDbCommand无法执行SQL语句:SQLSTATE[42S22]:
未找到列:1054未知列“t.customer\u id”在“where”中
条款'。执行的SQL语句是:SELECT
rep_view_customer.entity_id为t1_c0,
rep_view_customer.email为t1_c1,
代表查看客户名为t1、c2、,
代表查看客户姓氏为t1\U c3,
rep_view_customer.company作为t1_c4来自rep_view_customer
rep_view_customer,其中rep_view_customer.entity_id=
t、 客户识别码
我不知道下一步要做什么您必须在repview\u客户内部创建一个外键,以与佣金相关。您将无法仅使用主键执行此操作。您必须在repview\u客户内部创建一个外键,以与佣金相关。仅使用主键无法完成此操作。我是这样做的,它可以工作: 因此,在您放置的佣金模型中:它通过模型中的自身来处理关系,那么连接输出将与正常关系相同,但在佣金模型中具有其他唯一键
public function relations()
{
return array(
'commission' => array(self::HAS_ONE, 'Commission', 'entity_id', 'on' => 'commission.customer_id=rep_view_customer.entity_id'),
'rep_view_customer' => array(self::HAS_MANY, 'RepViewCustomer', '', 'through' => 'commission', 'condition' => '...'),
),
}
我是这样做的,效果很好: 因此,在您放置的佣金模型中:它通过模型中的自身来处理关系,那么连接输出将与正常关系相同,但在佣金模型中具有其他唯一键
public function relations()
{
return array(
'commission' => array(self::HAS_ONE, 'Commission', 'entity_id', 'on' => 'commission.customer_id=rep_view_customer.entity_id'),
'rep_view_customer' => array(self::HAS_MANY, 'RepViewCustomer', '', 'through' => 'commission', 'condition' => '...'),
),
}
我试过了,但只会出错。我对错误进行了一些挖掘,确保两列的数据类型都正确,但从我发现的情况来看,mysql不允许在视图中使用外键。发布错误后,您的错误可能是因为数据的类型不同。数据的类型都是相同的INT10 UNSIGNED。我使用了以下mysql ALTER TABLE customer ADD CONSTRAINT customer\u id外键customer\u id rep\u view\u customerentity\u id,得到错误1005-无法创建表'salesrep\u 1.sql-da8\u 9c4'错误号:150。我尝试过,但只得到错误。我对错误进行了一些挖掘,确保两列的数据类型都正确,但从我发现的情况来看,mysql不允许在视图中使用外键。发布错误后,您的错误可能是因为数据的类型不同。数据的类型都是相同的INT10 UNSIGNED。我使用了以下mysql ALTER TABLE customer ADD CONSTRAINT customer\u id外键customer\u id rep\u view\u customerentity\u id,并获得错误1005-无法创建表'salesrep\u 1.sql-da8\u 9c4'errno:150。您能否详细说明“调用”rep\u view\u customer的控制器函数的代码?因为在CdbCommand调试器中似乎没有连接happening@ZaQ从CdbCommand调试器看,似乎没有连接发生,我对此也感到困惑。我使用的是由Gii创建的默认Admin CGridView,并添加了一列“rep_view_customer.first_name”。我只有在添加相关列时才会出现错误。请详细说明“调用”代表视图客户的控制器函数的代码好吗?因为在CdbCommand调试器中似乎没有连接happening@ZaQ从CdbCommand调试器看,似乎没有连接发生,我对此也感到困惑。我使用的是由Gii创建的默认Admin CGridView,并添加了一列“rep_view_customer.first_name”。我只有在添加相关列时才会出现错误。