[英]Laravel belongsTo relationship not returning values
我試圖運行一個 hasMany,但我真的不知道為什么我沒有得到任何結果! 兩個表:公司,工作訂單,每個工作訂單都有一個公司名稱和地址,我想在laravel中使用belongsTo關系
<?php
namespace App;
class Company extends Model
{
protected $table = 'company';
protected $primaryKey = 'company_id';
public function jobs() {
return $this->hasMany('App\Joborder');
}
}
我的工作訂單頁面
<?php
namespace App;
class Joborder extends Model
{
protected $table = "joborder";
public $primaryKey = "joborder_id";
protected $dates = [
'start_date',
'created_at',
'updated_at'
];
public function company() {
return $this->belongsTo('App\Company');
}
}
這是頁面控制器:
public function joblist() {
$joblist = Joborder::all();
$newInstance = new Joborder;
$company = $newInstance->company();
dd($company->name);
dd($joblist);
return view('pages.joblist')->with('jobs',$joblist);
}
這是我的頁面運行后的 dd
BelongsTo {#217 ▼
#foreignKey: "company_id"
#otherKey: "company_id"
#relation: "company"
#query: Builder {#218 ▶}
#parent: Joborder {#205 ▼
#table: "joborder"
+primaryKey: "joborder_id"
#dates: array:3 [▼
0 => "start_date"
1 => "created_at"
2 => "updated_at"
]
#guarded: array:1 [▼
0 => "id"
]
#fillable: []
#connection: null
#keyType: "int"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: []
#original: []
#relations: []
#hidden: []
#visible: []
#appends: []
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: false
+wasRecentlyCreated: false
}
#related: Company {#212 ▼
#table: "company"
#primaryKey: "company_id"
#guarded: array:1 [▼
0 => "id"
]
#fillable: []
#connection: null
#keyType: "int"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: []
#original: []
#relations: []
#hidden: []
#visible: []
#appends: []
#dates: []
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: false
+wasRecentlyCreated: false
}
}
我在公司中有 company_id 作為 pkey,在 joborder 中有作為 fkey 感謝您的幫助!
你應該打電話
$company = $newInstance->company()->get();
代替
$company = $newInstance->company();
在PageController:jobList
。
現在,您正在通過而不是相關數據來恢復關系本身。
或者,您可以將company
作為屬性訪問,該屬性應自動返回相關數據而不是關系本身:
$company = $newInstance->company;
您需要在兩個關系中同時指定foreignKey
和localKey
,因為您沒有 id 作為主鍵
公司模式
public function jobs() {
return $this->hasMany('App\Joborder','company_id','company_id');
}
訂單模型
public function company(){
return $this->belongsTo('App\Company', 'company_id', 'company_id');
}
現在像這樣獲取它
public function joblist() {
$joblist = Joborder::with('company')->all();
dd($joblist);
return view('pages.joblist')->with($joblist);
}
如果您需要獲取公司的選定字段,則可以在預先加載$query->select('name', 'address');
指定它$query->select('name', 'address');
public function joblist() {
$joblist = Joborder::with(['company' => function($query){
$query->select('name', 'address');
}])->get();
return view('pages.joblist')->with($joblist);
}
在刀片中,您可以像這樣訪問公司數據
@foreach($joblist as $job)
@if($job->company)
{{$job->company->name}}
{{$job->company->address}}
@endif
@endforeach
嘗試這樣的事情
public function joblist() {
$joblist = Joborder::with('company')->get();
return view('pages.joblist')->with('jobs',$joblist);
}
確保公司表中有工作列表的 id。 還要檢查外鍵名稱,否則您必須傳遞joborder_id
或任何外鍵名稱:
public function company(){
return $this->belongsTo('App\Company', 'joborder_id');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.