【发布时间】:2015-04-17 15:52:07
【问题描述】:
我正在将一个大型项目从 CodeIgniter 迁移到 Laravel 5,并且遇到了一个我似乎无法找到解决方案的问题。
我知道你可以做路由模型绑定,我一直在广泛使用它没有问题,我知道你可以做方法注入,例如将Request注入方法。
但我的“问题”是我有多个同名的类,但针对项目的不同部分,例如:
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 将成为文章模型的新实例,而不是模型记录。该框架会让您手动检索每种方法的模型,这似乎有点奇怪。
感谢任何帮助。
【问题讨论】: