Отношения не работают должным образом в Laravel 5.4

У меня есть модель что-то вроде этих двух

workflows.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use DB;

class workflows extends Model
{
    //getWorkflows
    protected $table = 'workflows';

    function workFlowStates()
    {
        return $this->hasMany('App\Models\workflow_states','id','workflow_id');
    }
}

workflow_states.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use DB;
class workflow_states extends Model
{
    //
    protected $table = 'workflow_states';

    function workFlows()
    {
        return $this->belongsTo('App\Models\workflows','workflow_id','id');
    }

}

Когда я пытаюсь сделать это в своем контроллере

public function editworkflow($id)
    {
        $wf_model = new workflows;
        dd($wf_model::find($id));

    }

Я не могу видеть какие-либо отношения, я вижу только данные из таблицы рабочих процессов.

Может ли кто-нибудь помочь мне здесь

Благодарность


person Vikram Anand Bhushan    schedule 08.02.2017    source источник


Ответы (2)


Попробуй это :

public function editworkflow($id)
{
  echo workflows::with('workFlowStates')->find($id);
}

Вы не должны создавать объект во время редактирования записи. Как $wf_model = новые рабочие процессы; Вы можете сделать запрос, просто вызвав модель.

person Muthu17    schedule 08.02.2017

Это связано с тем, что данные из отношений не загружаются по умолчанию. Он извлекается только тогда, когда вы запрашиваете его или вызываете отношение.

Таким образом, в вашем коде, если вы попытаетесь получить доступ к данным отношения после метода find, он загрузит данные из базы данных и передаст их вам, что называется ленивой загрузкой. Как это:

public function editworkflow($id)
{
    $wf_model = new workflows;
    dd($wf_model::find($id)->workFlowStates);

}

Однако, если вы хотите быстро загрузить данные, вы можете использовать функцию Eloquent with. Но это не будет необходимо для одной записи, так как это не будет иметь никакого значения.

Прочтите это Красноречивая активная загрузка.

person Parantap Parashar    schedule 08.02.2017