0

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

4

0 回答 0