我正在使用CodeIgniter框架,并且无法弄清楚如何让我的网址显示类别名称,但仍然让我的查询引用类别ID。
我有一个名为jobs的控制器。 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”表保存了作业所属的category_id而不是category_name。我有一个单独的表,只包含类别ID和他们的名字。我不知道如何A.)写我的查询和B.)建立一个SEO友好的网址结构。
我当前的查询类似于“SELECT * FROM jobs WHERE cat_id = 3;
另外,我不确定我是否应该在.htaccess文件中使用mod_rewrite,或者我是否应该在CodeIgniter中使用routes.php文件。
非常感谢任何帮助!
-Thanks
答案 0 :(得分:3)
加入你的另一张桌子。
SELECT * FROM jobs JOIN categories ON jobs.cat_id = categories.id WHERE categories.name = ?;
如果您还没有类别名称,请确保在类别名称上添加唯一键。
mod_rewrite
对于应用路由来说是一个糟糕的解决方案,无论如何都无济于事。坚持你的框架提供的任何东西。
答案 1 :(得分:1)
在URL_title()
上查看http://codeigniter.com/user_guide/helpers/url_helper.html使用url_title()函数转换类别名称,确保没有重复项。
调用网址时使用简单的where语句从模型中查找您的类别
例如
$this->db->from('categories');
$this->db->where('name', $url);
Etc...
使用此方法加载页面标题等,然后使用返回的categoryid在您的作业表上查找。