1

私はこれらの2つのようなモデルを持っています

ワークフロー.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));

    }

リレーションシップを確認できません。ワークフロー テーブルのデータしか確認できません。

ここで誰か助けてくれませんか

ありがとう

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関数を使用できます。ただし、違いがないため、単一のレコードには必要ありません。

このEloquent 熱心な読み込みを読んでください。

于 2017-02-08T06:47:32.037 に答える