HasOne 和 HasMany 用于同一张表 cakephp
Posted
技术标签:
【中文标题】HasOne 和 HasMany 用于同一张表 cakephp【英文标题】:HasOne and HasMany for the same Table cakephp 【发布时间】:2017-09-16 16:03:40 【问题描述】:我想将 hasOne
和 hasMany
设置为相同的 model
,在我的代码的一部分中我只需要 1 个结果,但在其他部分我需要所有结果(来自类型 Client 的对象将返回对于我网站中的表格):
$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”。 条件:一组 find() 兼容条件,例如 ['Addresses.primary' => true]为你的 assocs 定义你需要的类名和条件。
$this->hasOne('Foo', [
'className' => 'Foo',
'conditions' => [/* whatever you need*/]
]);
$this->hasMany('Bar', [
'className' => 'Foo',
'conditions' => [/* whatever you need*/]
]);
【讨论】:
我认为你混淆了hasMany
的别名和类名;)【参考方案2】:
如果关系是 1-*,则应将关系定义为 hasMany()
。然后为一个结果编写一个查询,为多个结果编写一个查询
【讨论】:
以上是关于HasOne 和 HasMany 用于同一张表 cakephp的主要内容,如果未能解决你的问题,请参考以下文章
Doctrine 1.2 hasOne 覆盖 hasMany 关系
EF 核心一对多关系 HasOne().WithMany() vs HasMany().WithOne()
Yii2框架学习 3-3 单条数据详情展示; 小部件 DetailView的使用 ; 数据关联查询时 hasOne和hasMany