繁体   English   中英

两种模型之间有很多关系

[英]Has Many relations in between both models

我有这样的数据库

  == Invoices ==
  id
  customer_id

  == Customers ==
  id
  firstname
  lastname
  membersince

因此,我在两个模型之间建立了联系,如下所示。

发票模型中的关系定义:

'customers'=>array(self::HAS_MANY,'Invoices','customer_id'),

客户模型中的关系定义

'invoices' => array(self::BELONGS_TO, 'Invoices', 'invoice_id'),

现在我想知道两个模型之间的关系是否正确? 欢迎任何建议。

不,模型之间的关系不正确。

我假设您在这里想要的是客户可以有许多发票,但是发票只能由一个客户拥有,因为这就是您的数据库模式所暗示的。

请注意,在下面的代码中,我区分了客户和发票的单数形式和复数形式,以使代码具有逻辑性并易于理解。

在这种情况下, Invoice模型中的关系定义将如下所示:

class Invoice extends CActiveRecord {
    public function relations() {
        return array(
            'customer' => array(self::BELONGS_TO, 'Customer', 'customer_id')
        );
    }
}

发票“属于”客户。 'Customer'表明我们参考模型的类型是Customer ,而'customer_id'在列名invoices表指的是客户的主键。

Customer模型看起来有些棘手:

class Customer extends CActiveRecord {
    public function relations() {
        return array(
            'invoices' => array(self::HAS_MANY, 'Invoice', 
                               'customer_id', 'index' => 'id')
        );
    }
}

在此,关系定义指示Customer可以引用许多Invoice模型。 注意其余关系的定义方式。 customer_id再次是引用Customer的列,并且'index' => 'id'告诉Yii将customers表中的列id用作关系的键。

您可以在Yii文档中找到有关relations方法的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM