我在编码时不使用模型,仅使用控制器和视图。
我为什么要使用它?如果我使用模型,那么它有什么用?
我正在使用laravel 5。
感谢一切。
答案 0 :(得分:0)
模型通常用于通过Eloquent ORM与数据库进行交互。 Eloquent提供了简单的ActiveRecord模式,该模式基本上意味着它是一个在数据库中包装一行的实体。
因此,从最纯粹的角度来看,如果您的模型行为返回单个行,则可以将其添加到Eloquent Model类中。
现在,根据应用程序的大小,您可以直接在控制器中使用模型,并使用Eloquent的流畅接口进行逻辑处理。这确实意味着您的控制器内部具有雄辩的依赖性。
// Inside the controller
return view('...')->with('posts', Posts::where('author', 1)->get());
根据应用程序的大小,有时在添加另一个提取层(在控制器内部使用存储库)时很有用,该存储库返回对象的集合。令其感到高兴的是,控制器内部的依赖项随后可以遵循一个可交换的存储库接口,因此您可以拥有一个EloquentRepository或NoSQLRepository等。在控制器内部可能像这样,
public function __construct(PostRepositoryInterface $postRepository)
{
$this->postRepository = $postRepository;
}
public function posts()
{
return view('posts.list')->with('posts', $this->postRepository->findByAuthor(1));
}
还可以在另一层引入一个层,在该层中可以使用服务类(一个非常通用的术语),该类消耗存储库,对集合进行大量处理并返回所需的内容。
我确实同意您的观点,即您不希望在控制器内部浮动showDestinationState的实现。最后,考虑到应用程序的大小,您可以做对自己合适的事情。对于较小的应用程序,无需具有存储库和备用服务层。精通查询构建器可以在控制器内部很好地工作。
我也以您的工作为例,我并不真的喜欢静态通话,所以我个人远离它们,但这就是个人品味。
其他方面,用于MVC的M不仅引用Eloquent类。该模型可以包括几个类,并且是一个分离层。因此,模型(无论可能是什么)对UI层一无所知。