Поиск по максимальному значению в базе данных Eloquent Laravel - PullRequest
0 голосов
/ 07 декабря 2018

Как преобразовать этот сырой SQL в Eloquent Database в моем контроллере API?

Что я попробовал, так это то, что я хочу получить данные из двух таблиц из моего контроллера API.

Первое: Formc_image Tableкоторая является общей информацией о данных

Второе: Formc_image_detail которая является подробностью и путем к данным

Они связаны по идентификатору.

Это мой API-контроллер FormCController.php

SELECT * 
FROM formc_image_detail
WHERE id_tps=$id_tps AND jenis_pemilihan=$election_id
AND versi = (SELECT MAX(versi) FROM formc_image WHERE id_tps=id_tps AND jenis_pemilihan=$election_id)
ORDER BY no_lembar ASC

Это моя модель FormCImageDetail

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class FormCImageDetail extends Model
{
    protected $table = 'formc_image_detail';

    public function formc_image(){
      return $this->belongsTo('App\Models\FormCImage');
    }
}

Это моя модель FormCImage

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class FormCImage extends Model
{
    protected $table = 'formc_image';
}

Я сделал этот код в моем контроллере API:

return response(FormCImageDetail::with('formc_image')
      ->where('jenis_pemilihan', $electionId)
      ->where('id_tps', $tpsId)
      ->orderBy('no_lembar', 'ASC')->paginate(100)->jsonSerialize(), Response::HTTP_OK);

Но это все равно ошибка.

Это моя миграция:

Schema::create('formc_image', function (Blueprint $table) {
            $table->integer('id_tps');
            $table->smallint('versi');
            $table->string('jenis_pemilihan');
            $table->timestamps();
}

Schema::create('formc_image_detail', function (Blueprint $table) {
            $table->integer('id_tps');
            $table->smallint('versi');
            $table->integer('no_lembar');
            $table->string('jenis_pemilihan');
            $table->char('url_image', 100);
            $table->timestamps();
}

1 Ответ

0 голосов
/ 07 декабря 2018

Используйте это:

return FormCImageDetail::with('formc_image')
    ->where('jenis_pemilihan', $electionId)
    ->where('id_tps', $tpsId)
    ->where('versi', function($query) use($election_id) {
        $query->select(DB::raw('max(versi)'))
            ->from('formc_image')
            ->whereColumn('id_tps', 'formc_image_detail.id_tps')
            ->where('jenis_pemilihan', $election_id);
    })
    ->orderBy('no_lembar')
    ->paginate(100);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...