【发布时间】:2016-12-26 08:09:21
【问题描述】:
我正在发布 Laravel 5.2 现实生活中的路由用例,并希望得到答案。问题:多个不同数据库查找的相同 url 结构。 请不要发表关于如何简化 URL 结构的评论,这是结构必须的方式,许多网站在此段中使用它。
网址结构
domain.com/{slug1}/{slug2}/{slug3}
// e.g. domain.com/cottages/slovakia/cheap
// {slug1} - DB table accommodation_types (20+)
// {slug2} - DB table locations (300+)
// {slug3} - DB table accommodation_categories e.g. cheap etc. (100+)
domain.com/{slug1}/{slug2}
// e.g. domain.com/cottages/cheap OR domain.com/slovakia/cheap
// {slug1} - DB table accommodation_types OR locations
// {slug2} - DB table locations OR accommodation_categories
domain.com/{slug}
// DB table accommodation (10000+ entries)
// or
// accommodation_types OR locations OR accommodation_categories
你会怎么做呢?我有这些想法。
一个。在检查 url 段后使用闭包并调用适当的控制器?
Route::get('{slug1}', function ($slug1, $slug2 = null, $slug3 = null)
{
// Check accommodation
$object = Accommodation::where('slug', $slug1)->first();
if( !is_null($object) )
{
return app()->make('AccommodationDetailController')->view($object);
}
// Check type
$type = AccommodationType::where('slug', $slug1)->first();
if( !is_null($type) )
{
return app()->make('AccommodationListController')->view($type);
}
// etc.
});
b.通过for循环生成上千个url然后缓存呢?
我感谢任何其他出色的解决方案
【问题讨论】:
-
为什么要投反对票?不明白。
标签: php database laravel laravel-5 routes