我正在开发cakephp中的标记系统。标签可以是其他标签的子节点。 (没有孩子的孩子)。
模型是用户和标签。他们的关系看起来像这样:
//User.php:
public $hasAndBelongsToMany = array(
'Tag' => array(
'className' => 'Tag',
'joinTable' => 'users_tags',
'foreignKey' => 'user_id',
'associationForeignKey' => 'tag_id',
'unique' => true,
),
);
//Tag.php:
var $belongsTo = array(
'Parent' => array(
'className' => 'Tag',
'foreignKey' => 'parent_id',
'dependent' => true,
),
);
当我尝试做一个简单的分页时,就像这样,
$this->User->recursive = 2;
$this->set('users', $this->paginate());
我得到一些看起来像这样的奇怪结果:
array(
(int) 0 => array(
'User' => array(
...
),
'Tag' => array(
(int) 0 => array(
'id' => '1',
'parent_id' => null,
...
'Parent' => array()
),
(int) 1 => array(
'id' => '2',
'parent_id' => '1',
...
'Parent' => array(
'id' => '1',
'parent_id' => null,
...
)
)
)
),
(int) 1 => array(
'User' => array(
...
),
'Tag' => array(
(int) 0 => array(
'id' => '1',
'parent_id' => null,
...
'Parent' => array(
'Parent' => array() //What's up with this parent inside the parent?
)
),
(int) 1 => array(
'id' => '2',
'parent_id' => '1',
...
'Parent' => array(
'id' => '1',
'parent_id' => null,
...
)
)
)
)
)
你会注意到返回奇怪结果的标签实际上是与数组中第一个标签相同的标签(id#1)。我很困惑为什么它会在之前,而第二次错了..?