Closed thisnugroho closed 2 months ago
Mungkin bisa dibikin base nya dulu de, jadi semua repo tinggal extend itu.
Kayanya cukup aja SubmissionRepository
tanpa perlu BaseSubmissionRepository
. Perlu base global aja yg mencakup fungsi yg umum untuk digunakan semua repo
namespace App\Repositories;
use Illuminate\Database\Eloquent\Model;
abstract class BaseRepository
{
protected string $model;
abstract public function getModel();
public function create(array $data)
{
return $this->getModel()::create($data);
}
public function update(Model $model, array $data)
{
$model->update($data);
if (method_exists($model, 'meta') && array_key_exists('meta', $data) && is_array($data['meta'])) {
$model->setManyMeta($data['meta']);
}
return $model;
}
public function delete(Model $model)
{
return $model->delete();
}
}
Related issue: https://github.com/OpenSynergic/leconfe/issues/213
Kenapa menggunakan repository pattern
Repository Pattern memungkinkan pemisahan yang jelas antara logika aplikasi (application logic) dan akses data (data access), Jadi
query
tidak dilakukan secara langsung melalui model, melainkan melalui repository terlebih dulu, yang kemudian bertanggung jawab untuk menjalankan query ke database menggunakan model.Contoh penggunaan dalam hal menerima abstract yang masuk.