【发布时间】:2016-11-19 13:08:30
【问题描述】:
我正在尝试在 Laravel 中添加自定义存储库(合同和 Eloquent)。
我不明白在哪里添加它们以及如何与服务绑定。
任何机构都可以展示在 Laravel 中添加自己的存储库类和接口的最佳示例吗?
提前致谢
【问题讨论】:
-
不确定我是否关注。 Laravel 已经包含 Eloquent。你到底想做什么?
标签: php laravel web web-deployment
我正在尝试在 Laravel 中添加自定义存储库(合同和 Eloquent)。
我不明白在哪里添加它们以及如何与服务绑定。
任何机构都可以展示在 Laravel 中添加自己的存储库类和接口的最佳示例吗?
提前致谢
【问题讨论】:
标签: php laravel web web-deployment
我喜欢构建 Laravel 代码的方式是:
型号 - App\Models\*
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model as BaseModel;
class Model extends BaseModel
{
//
}
合同 - App\Repositories\Contracts\*
<?php
namespace App\Repositories\Contracts;
interface Repository
{
// All the common methods for eloquent like - all, paginate, find, where, etc...
}
存储库 - App\Repositories\Db\*
<?php
namespace App\Repositories\Db;
class ExampleRepository
{
// All the CRUD related methods here...
}
服务 - App\Services\*
<?php
namespace App\Services;
class ExampleService
{
// All the logic & business related methods here...
}
这就是我喜欢用 laravel 的方式来构建我的代码。
希望这会有所帮助!
【讨论】:
在你的控制器中注入 CustomRepository Class.Like-
自定义控制器类扩展控制器{
私人 $customRepo;
public function __construct(CustomRepository $customRepo)
{
$this->customRepo= $customRepo;
}
}
【讨论】:
为了使用存储库模式(如果你想说的话),你有两个选择,一个是在自定义命名空间下实现(比如说App\Repositories),一个与您想在所有存储库中使用的方法,可能是AbstractRepository 或类似的东西,这个选择很痛苦,因为您必须编写大量代码,另一种选择(我会使用)是安装以下包https://github.com/andersao/l5-repository,真的很有用,里面已经有很多方法了,只要按照自述文件的说明来实现这个模式,你就不会遇到任何问题,希望对你有帮助,加油! ;)
【讨论】: