我正在将一个大型项目从CodeIgniter移动到Laravel 5,并且遇到了一个我似乎无法找到解决方案的问题。Laravel方法模型绑定?
我知道你可以做路由模型绑定,并且我一直在使用它没有问题,并且我知道你可以做方法注入,比如注入请求到方法中。
但我的“问题”是我有多个类具有相同的名称,但该项目的不同部分,例如:
App\Models\Knowledgebase\Article
App\Models\News\Article
App\Models\Minisite\Resources\Article
正如你所看到的,我有3种不同的型号Article
。一个用于知识库文章,一个用于新闻文章,另一个用于部门资源文章。
但是,使用路由模型绑定,似乎我只能将一个模型绑定到关键字,并且由于我的URL每个都有关键字Article,所以它不起作用。
所以我的问题是,是否有可能通过将其指定为参数将相关模型注入方法中?或者我需要硬编码到方法说:
$article = App\Models\Knowledgebase\Article::find($some_id);
或者,我可以做这样的事情:
public function show(App\Models\Knowledgebase\Article $article)
{
// code
}
此刻,如果我尝试注入的文章,$article
变文章模型的新实例,而不是模型记录。这似乎有点奇怪,框架会让你手动检索每种方法的模型。
任何帮助表示赞赏。
我可以用'Route :: resource()'使用这种方法吗?无论哪种方式,这也很有帮助 –
@PhilCross我不使用'Route :: resource()'太多了,对不起。也许? – ceejayoz
我决定用单独的路线替换路线资源(get/post/put等)。至少这样我可以在Route文件中更好地控制模型别名的名称。 –