如何调用结果数据库查询从模型到API控制器Laravel



我在api控制器(formcontroller.php)中具有此查询,它们调用2个模型,它们与许多人相关。

public function getFormD($electionId, $model, $wilayahId)
    {
      $result = FormDImageDetail::with('formd_image')
      ->where('jenis_pemilihan', $electionId)
      ->where('jenis_form', $model)
      ->where('id_wilayah', $wilayahId)
      ->where('versi', function($query) use($electionId) {
        $query->select(DB::raw('max(versi)'))
        ->from('formd_image')
        ->whereColumn('id_wilayah', 'formd_image_detail.id_wilayah')
        ->where('flag_aktif', true)
        ->where('jenis_pemilihan', $electionId);
      })
      ->orderBy('no_lembar')
      ->paginate(100);
      return $result;
    }

第一个模型(formDimage.php)

<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class FormDImage extends Model
{
    protected $table = 'formd_image';
}

我的第二个型号(formDimagedetail.php)

<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class FormDImageDetail extends Model
{
    protected $table = 'formd_image_detail';
    public function formd_image(){
      return $this->belongsTo('AppModelsFormDImage', 'id_wilayah', 'id_wilayah');
    }
}

目前,我想将查询SQL从API控制器移动到模型并使用DB :: RAW SQL,然后在此API控制器中调用。

我应该如何做?

正确的方法是将您的业务逻辑和其他功能放在控制器中。为什么您需要将SQL转移到模型中。模型是与DB和您的应用程序的关系。如果要封装查询,请尝试使用存储库模式进行此操作。此链接将对您有所帮助。

https://bosnadev.com/2015/03/07/ususe-repository-pattern-in-laravel-5/#criteria_queries

https://medium.com/employbl/use-the-repository-design-pattern-in-a-a-laravel-application-13f0b46a3dce

最新更新