我正在研究 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)。我很困惑为什么以前是对的,第二次是错的..?