簡體   English   中英

Laravel 5.4 中的關系無法正常工作

[英]The relations not working properly in Laravel 5.4

我有一個類似這兩個的模型

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

    }

我看不到任何關系,我只能看到工作流表中的數據。

有人可以幫助我嗎

謝謝

嘗試這個 :

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

編輯記錄時不要創建對象。 像 $wf_model = 新的工作流程; 您只需調用 model 即可進行查詢。

這是因為默認情況下不會預先加載關系中的數據。 只有當您要求或調用關系時才會檢索它。

因此,在您的代碼中,如果您嘗試在 find 方法之后訪問關系數據,它將從 db 加載數據並將其提供給您,這稱為延遲加載。 像這樣:

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

}

但是,如果您想預先加載數據,您可以使用 Eloquent 的with函數。 但是對於單個記錄來說沒有必要,因為它沒有任何區別。

閱讀這個Eloquent 預先加載

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM