【发布时间】:2013-10-02 15:53:24
【问题描述】:
我需要将分层数据存储在 mysql 表中。我正在使用 CakePHP 2.2.4。
我在 CakePHP 文档中发现了这种良好的行为: http://book.cakephp.org/2.0/en/core-libraries/behaviors/tree.html
我已经了解如何使用它,但我想使用不同的参数来查找类别,让我解释一下。
假设有这个Mysql表:(和行为文档PLUS slug栏里报道的一样:
CREATE TABLE categories (
id INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INTEGER(10) DEFAULT NULL,
lft INTEGER(10) DEFAULT NULL,
rght INTEGER(10) DEFAULT NULL,
name VARCHAR(255) DEFAULT '',
slug VARCHAR(255) DEFAULT '',
PRIMARY KEY (id)
);
此 slug 列将具有类别的真实“路径”,例如:
www.example.com/controller/action/slug
如您所见,我需要在 URL 中传递真实姓名(而不是类别编号)。
然后,我的目的是检索该类别的所有树(slug)。
目前 TreeBehavior 通过传递 ID 过滤类别。我无法通过 ID,我需要通过 slug
问题是:
我还能使用 TreeBehavior 还是必须扩展它?
谢谢!
【问题讨论】:
-
如果你有 slug,那么只要 slug 在树中是唯一的,你就有了 id。从 slug = ... 为您提供 id 的类别中的简单选择 id
-
@SirRufo 是的,它是正确的。但是我是否必须在我的模型中实现它而不使用行为,它是否遵循 CakePHP 规则?或者我可以扩展树行为吗?
-
thinking cake 的 url 应该包含 slug id,例如www.example.com/controller/action/25/slug
-
@SirRufo 是的,应该,但我不想在 URL 中输入数字,我想创建一个 URL,例如:www.example.com/controller/action/slug跨度>
-
我知道你不想要,但这就是蛋糕的方式。如果您不想要蛋糕方式,则必须手动返回蛋糕。行为遵循蛋糕的方式