mardi 27 août 2019

Make a custom model that will get data from another model laravel 5.8

I have a model, which is storing foreign key data of various tables. Here is the model details:

class InstituteStage extends Model
{
    protected $guarded = [];

    public function branch()
    {
        return $this->belongsTo('App\Model\Branch');
    }

    public function version()
    {
        return $this->belongsTo('App\Model\Version');
    }

    public function shift()
    {
        return $this->belongsTo('App\Model\Shift');
    }

    public function stage()
    {
        return $this->belongsTo('App\Model\Stage');
    }

    public function academic_year()
    {
        return $this->belongsTo('App\Model\AcademicYear');
    }

}

Right now if i fetch the data, i'm getting those fields:

Array
(
    [0] => Array
        (
            [id] => 3
            [stage_for] => Teachers
            [branch_id] => 1
            [version_id] => 1
            [shift_id] => 1
            [stage_id] => 1
            [academic_year_id] => 1
        )

    [1] => Array
        (
            [id] => 4
            [stage_for] => Students
            [branch_id] => 2
            [version_id] => 2
            [shift_id] => 2
            [stage_id] => 2
            [academic_year_id] => 2
        )
)

Now i want the details (such as name) of other tables. The response i'm looking for is:

Array
(
    [0] => Array
        (
            [id] => 3
            [stage_for] => Teachers
            [institute_stage_name] => "branch_name->version_name->shift_name->stage_name" 
        )

    [1] => Array
        (
            [id] => 4
            [stage_for] => Students
            [institute_stage_name] => "branch_name->version_name->shift_name->stage_name" 
        )
)

I can get datas using eager loading and concat them in frontend. But i want to use a custom model which will return this details. Is it possible to get this structure!

i made another static method in my model and getting all the data:

public static function student_institute_stage_data()
{
    return static::where([
        ['stage_for', 'Students'],
        ['status', 'active']
    ])
    ->with(['branch', 'version', 'shift', 'stage'])
    ->get();
}

then in my controller:

$instituteStage = InstituteStage::student_institute_stage_data();

after that in my blade, im doing this ->

@foreach ($instituteStage as $stage)
    <option value=""  ></option>
@endforeach



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire