2017-09-16 128 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()。然后,您针对一个结果编写查询并为多个结果查询