在阅读了T. Otwell关于Laravel优秀设计模式的书之后,在Laravel 4中创建应用程序时,我发现自己为应用程序中的每个表创建了存储库.
我最终得到了以下表格结构:
我有所有这些表的查找,创建,更新和删除方法的存储库类.每个存储库都有一个与数据库交互的Eloquent模型.根据Laravel的文档,模型中定义了关系:http://laravel.com/docs/eloquent#relationships .
在创建新课程时,我所做的就是在课程资源库中调用create方法.该课程有作业,因此在创建作业时,我还想在课程中为每个学生在乐谱表中创建一个条目.我是通过Assignment Repository完成的.这意味着赋值存储库使用Assignment和Student模型与两个Eloquent模型进行通信.
我的问题是:由于此应用程序的大小可能会增加并且会引入更多关系,因此在存储库中与不同的Eloquent模型进行通信是一种好的做法,还是应该使用其他存储库来完成(我的意思是从Assignment存储库调用其他存储库) )还是应该在Eloquent模型中一起完成?
此外,将分数表用作作业与学生之间的转轴还是应该在其他地方完成,这是一种好习惯吗?
我知道有很多答案,但我无法真正解决这个问题。
我确实按照这个答案(How to make a REST API First Web application in Laravel)在 Laravel 5.7 上创建存储库/网关模式
我在 github 上还有“项目”,如果有人真的想要 test/clone/see : https: //github.com/sineverba/domotic-panel/tree/development (开发分支)
应用\接口\Lan接口
<?php
/**
* Interface for LAN models operation.
*/
namespace App\Interfaces;
interface LanInterface
{
public function getAll();
}
Run Code Online (Sandbox Code Playgroud)
应用\提供商\服务提供商
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
/**
* Solve the "Key too long" issue …Run Code Online (Sandbox Code Playgroud)