Laravel从数据库获取路由

Laravel从数据库获取路由,laravel,eloquent,routes,Laravel,Eloquent,Routes,我想问一下,是否有可能在拉拉维尔得到类似动态路线的东西。 我有一个基于模块的个人CMS。每个模块==控制器。在数据库中,我有一个名为“structure”的表,其中存储了页面的所有子网站。项目的名称应该是any,所以我不知道项目的名称,因为它基于用户的意愿。所以文章模块应该命名为“新闻”、“文章”、“博客”等等,我不知道。这意味着,我无法将路径设置为确切的单词,因为它的名称可能是任何东西。这就是我将这些数据存储到数据库的原因。在数据库中,我还有模块_名称,它将指向控制器 因此,如果用户将设置,例

我想问一下,是否有可能在拉拉维尔得到类似动态路线的东西。 我有一个基于模块的个人CMS。每个模块==控制器。在数据库中,我有一个名为“structure”的表,其中存储了页面的所有子网站。项目的名称应该是any,所以我不知道项目的名称,因为它基于用户的意愿。所以文章模块应该命名为“新闻”、“文章”、“博客”等等,我不知道。这意味着,我无法将路径设置为确切的单词,因为它的名称可能是任何东西。这就是我将这些数据存储到数据库的原因。在数据库中,我还有模块_名称,它将指向控制器

因此,如果用户将设置,例如: 博客->模块文章, 我需要从db获得如下路径:

Route::get('/Blog/', 'ArticleController@index');
“Blog”和“Article”都存储在DB中

我的问题是,我无法从数据库检索此数据。从“最佳实践”的角度来看,我应该如何做到这一点? 我试着写作

use DB;
在routes/web.php的顶部,但它不起作用。我还认为,这是代码压舱物


如果有人能帮我,我会很感激的。谢谢你

这样的路线,设置一个通配符

Route::get('/{name}', 'ArticleController@show');
然后在控制器中,对于index()方法:


其实我不知道你为什么要这么做

你的意思是这样的吗

// route
Route::get('/{slug}', 'RedirectController@redirect');

// RedirectController
public function redirect($slug)
{
    // in your example slug is the column name of the 'Blog'
    $to = \DB::table('route_table')->where('slug', $slug)->firstOrFail();

    // module is the column name of Article
    return redirect()->action($to->module . 'Controller@index');
}

我认为您需要阅读laravel的ORM和路由模型绑定。或就把它转包给我吧。我一直在做这种事情。@索引应该是一个列表。把它改成@show($name)@TarekAdam是的,那是最好的做法,恐怕不行。我有更多的模块,只有文章。我还需要为图库、联系人表单、静态页面等设置路由。您认为如何?@MegoSoft签出路由模型绑定。在我写的时候,使用ORM比使用DB::语句更好。我不知道子网站的确切名称。每个模块都应该在任何url上可用。
// route
Route::get('/{slug}', 'RedirectController@redirect');

// RedirectController
public function redirect($slug)
{
    // in your example slug is the column name of the 'Blog'
    $to = \DB::table('route_table')->where('slug', $slug)->firstOrFail();

    // module is the column name of Article
    return redirect()->action($to->module . 'Controller@index');
}