GTMeteor
GTMeteor

Reputation: 857

Laravel Eloquent model JOIN a MAX record

I'm new to Laravel and I'd like to know how to use eloquent model to join a max(date) record...

App\SchemasGroup::find(7)->schemas()->get()->max('schemasVersion')->get();

I find a group of schemas (schemas_groups table) based on ID, then get the schemas from that group (schemas table), and I want to join the 'date' and 'version' field from schemas_versions table with the last version (so, max date or version field) ...

Relations are defined as:

class SchemasGroup extends Model
{
    public function schemas() { return $this->hasMany('App\Schema'); }
}

class Schema extends Model
{
    public function group() { return $this->belongsTo('App\SchemasGroup'); }
    public function versions() { return $this->hasMany('App\SchemasVersion'); }
}

class SchemasVersion extends Model
{
    public function schema() { return $this->belongsTo('App\Schema'); }
    public function updatedBy() { return $this->belongsTo('App\User','updated_by'); }
}

Getting the user name who updated that last version would also be lovely...

Upvotes: 1

Views: 388

Answers (1)

GTMeteor
GTMeteor

Reputation: 857

Apparently it was easy with defining chaining models.

class Schema extends Model
{
   public function group() { return $this->belongsTo('App\SchemasGroup'); }
   public function versions() { return $this->hasMany('App\SchemasVersion'); }
   public function latestVersion() { return $this->hasOne('App\SchemasVersion')->latest(); }
}

and then fetching the data with:

App\SchemasGroup::with('schemas.latestVersion.updatedBy')->find($schemaGroupId);

Upvotes: 1

Related Questions