public function up() { Schema::create('configurations', function (Blueprint $table) { $table->increments('id'); $table->date('date_from'); $table->integer('race_id'); $table->timestamps(); }); }
w modelu mam
public function parameters() { return $this->hasMany('App\Models\Parameter'); }
oraz listę parametrów przypisanych do danej konfiguracji
public function up() { Schema::create('parameters', function (Blueprint $table) { $table->increments('id'); $table->integer('configuration_id'); $table->tinyInteger('day'); $table->decimal('water', 8, 3); $table->smallInteger('feed'); $table->smallInteger('weight'); $table->decimal('downs'); $table->timestamps();
pytania z założeniami:
1. Potrzebuję wyciągnąć zsumowaną pod względem ( water, feed, weight, downs ) listę parametrów należące do configuracji o race_id in (tutaj różnie może być od jednego id po kilka) + dodatkowo jak widać mogę mieć kilka konfiguracji dla danego race_id więc potrzebują wziąć tą z najnowszą datą.
$configuration = Configuration::whereIn('race_id', [1, 2])->get();
może też inaczej ,..... chciałbym osiągnąć wynik, który daje np takie zapytanie:
SELECT p.[DAY], SUM(p.water), SUM(p.feed), SUM(p.weight), SUM(p.downs) FROM dbo.parameters p LEFT JOIN dbo.configurations c ON c.id = p.configuration_id INNER JOIN ( SELECT race_id, MAX(date_from) AS MaxDate FROM dbo.configurations GROUP BY race_id ) tm ON c.race_id = tm.race_id AND c.date_from = tm.MaxDate WHERE c.race_id IN (1,2) GROUP BY p.[DAY] ORDER BY 4;
czyli potrzebuję wybrać najnowszą konfigurację dla danego race_id. W przypadku kilku race_id wziąć najnowszą konfigurację i dodać ja do najnowszego konfiguracji z kolejnego race_id
Chciałbym to wyciągnąc ładnie ORM i nie uzywać plain query.
Czy ktoś z Was ma pomysł?