2017-09-16 133 views
0

我想設置hasOnehasMany到相同的model,在我的代碼的一部分,我只需要1個結果,但在其他部分我需要所有結果(對象類型客戶端將返回在我的網站表):HasOne和HasMany爲同一個表cakephp

$this->hasOne('Vendas') 
    ->setForeignKey('id_cliente') 
    ->setBindingKey('id') 
    ; 

    $this->hasMany('Vendas') 
    ->setForeignKey('id_cliente') 
    ->setBidingKey('id'); 

這是可能的,或者我犯了一個錯誤?

回答

1

閱讀手冊https://book.cakephp.org/3.0/en/orm/associations.html。仔細閱讀整個頁面。

  • className:該表的類名與當前模型相關聯。如果你正在定義'User hasOne Address'關係,那麼className鍵應該等於'Addresses'。
  • 條件:查找數組()兼容條件,如[ 'Addresses.primary'=>真]

定義的類名和條件,您需要爲您的ASSOCS。

$this->hasOne('Foo', [ 
     'className' => 'Foo', 
     'conditions' => [/* whatever you need*/] 
    ]); 

    $this->hasMany('Bar', [ 
     'className' => 'Foo', 
     'conditions' => [/* whatever you need*/] 
    ]); 
+0

我想你已經混淆了'hasMany'的別名和類名;) – ndm

+0

Meh,true,corrected。 – burzum

0

如果關係是1- *,則應將關係定義爲hasMany()。然後,您針對一個結果編寫查詢併爲多個結果查詢