【发布时间】:2015-10-15 12:18:50
【问题描述】:
是否可以与 2 个表建立多对多关系? 假设我有以下结构:
<?php
use Phalcon\Mvc\Model;
/**
entity
-id
-name
-sub_group_id
*/
class Entity extends Model {
public $id;
public $name;
public $sub_group_id;
public function initialize()
{
$this->belongsTo('sub_group_id', 'SubGroup', 'id', ['alias' => 'subgroup']);
}
}
/**
sub_group
-id
-name
-group_id
*/
class SubGroup extends Model {
public $id;
public $name;
public $group_id;
public function initialize()
{
$this->belongsTo('group_id', 'Group', 'id', ['alias' => 'group']);
$this->hasMany('id', 'Entity', 'sub_group_id', ['alias' => 'entities']);
}
}
/**
group
-id
-name
*/
class Group extends Model {
public $id;
public $name;
public function initialize()
{
$this->hasMany('id', 'SubGroup', 'group_id', ['alias' => 'subgroups']);
}
}
所以 Group 将与 SubGroup 具有“hasMany”关系。 子组将与实体具有“hasMany”关系。
要从我使用的组中获取实体:
<?php
$entities = [];
$group = Group::findFirst();
foreach ($group->subgroups as $subgroup){
$entities = array_merge($entities, $subgroup->entities->toArray());
}
我应该改变什么关系,比如说 子组将与实体具有“hasManyXXX”关系。
得到以下结果:
<?php
$entities = $group->subgroups->entities->toArray();
这有可能吗?
【问题讨论】:
-
快速浏览一下,您可能会对正在使用的嵌套集感兴趣。不是 100% 适合您的使用,但仅从您的代码来看,它看起来更适合 github.com/phalcon/incubator/tree/master/Library/Phalcon/Mvc/…
-
@david.duncan,看起来不错。我一定会深入了解未来 - 谢谢。
标签: relationship models phalcon