0

我正在使用 CodeIgniter 框架,并且无法弄清楚如何让我的 url 显示类别名称,但我的查询仍然引用类别 ID。

我有一个控制器设置称为作业。url 的结构是“example.com/jobs/listings/category_id” 例如:“example.com/jobs/listings/3” 其中 3 是“软件”的类别 ID。

我宁愿网址说“example.com/jobs/listings/category_name”示例:“example.com/jobs/listings/software”。

我遇到的问题是“jobs”表保存了job所属的category_id,而不是category_name。我有一个单独的表,其中仅包含类别 ID 及其名称。我不知道如何 A.) 写我的查询和 B.) 做一个 SEO 友好的 url 结构。

我当前的查询类似于“SELECT * FROM jobs WHERE cat_id = 3;

另外,我不确定是否应该在 .htaccess 文件中使用 mod_rewrite 或者是否应该在 CodeIgniter 中使用 routes.php 文件。

任何帮助将不胜感激!

-谢谢

4

2 回答 2

3

只需加入您的另一张桌子。

SELECT * FROM jobs JOIN categories ON jobs.cat_id = categories.id WHERE categories.name = ?;

如果您还没有,请确保在类别名称上放置一个唯一键。

mod_rewrite对应用程序路由来说是一个糟糕的解决方案,无论如何在这里也无济于事。坚持你的框架提供的任何东西。

于 2011-05-29T05:09:41.463 回答
1

看看这里http://codeigniter.com/user_guide/helpers/url_helper.html在 URL_title()

使用 url_title() 函数转换您的类别名称,确保没有重复项。

当调用 url 时,使用简单的 where 语句从模型中查找您的类别

例如

$this->db->from('categories');
$this->db->where('name', $url);
Etc...

使用它来加载您的页面标题等,然后使用返回的 categoryid 在您的工作表上进行查找。

于 2011-05-29T13:11:22.607 回答