1

我有一个类似这两个的模型

工作流.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');
    }
}

工作流状态.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));

    }

我看不到任何关系,我只能看到工作流表中的数据。

有人可以帮我吗

谢谢

4

2 回答 2

1

试试这个 :

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

编辑记录时不要创建对象。像 $wf_model = 新的工作流程;您可以通过调用模型进行查询。

于 2017-02-08T07:09:08.257 回答
0

这是因为默认情况下,关系中的数据不是预先加载的。只有当您请求或调用关系时才会检索它。

因此,在您的代码中,如果您尝试在 find 方法之后访问关系数据,它将从 db 加载数据并将其提供给您,这称为延迟加载。像这样:

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

}

但是,如果您想预先加载数据,您可以使用 Eloquent 的with功能。但是对于单个记录而言,这不是必需的,因为它不会产生任何影响。

阅读这个雄辩的急切加载

于 2017-02-08T06:47:32.037 回答