Support the ongoing development of Laravel.io →
Database Eloquent

I have two models Student and StudentRevision with Student model having hasMany relation with StudentRevision model. I have defined a hasMany relation in Student as

public function revisions()
{
    return $this->hasMany(
        StudentRevision',
        'sid'
    );
}

I have a field in students table (Student model) which references current revision of student from student_revisions table.

The table structure is something like this.

students sid srid name ....

student_revisions srid sid batch ....

Now i want to define hasOne relation with StudentRevision model which references current revision linked with Student. Currently I have defined this relation as:

public function current()
{
    return $this->hasOne(
        'StudentRevision',
        'sid'
    )
    ->where('srid', $this->srid);
}

But the problem with this relation is, that $this->srid is not available during query building process and can be only there after the actual model is available.

Please help how to overcome this.

Last updated 3 years ago.
0

use the Laravel docs instruction instead. Instantiate a model then add <code>srid</code> parameter

public function revisions()
{
    return $this->hasMany(
       'StudentRevision',
        'sid'
    );
}

at your controller

public function getStudent($srid=NULL)
{
    $m= new Student();
    $g= $m->current()->where('srid',$srid);
    var_dump($g);
    // another code written here...
}

#cmiiw

0

Sign in to participate in this thread!

Eventy

Your banner here too?

Moderators

We'd like to thank these amazing companies for supporting us

Your logo here?

Laravel.io

The Laravel portal for problem solving, knowledge sharing and community building.

© 2025 Laravel.io - All rights reserved.