簡體   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