[英]Laravel 5.2 EagerLoading relationship returns null
我正在從4.2升級到Laravel 5.2,並遇到一個奇怪的問題,當我在關系上使用“急切加載”時,它返回null,但是我可以手動調用它。
這是我的父母模型:
namespace App\Models\Hours;
class Hours extends Model {
/**
* Model Setup
*/
protected $table = 'leave_hours';
protected $primaryKey = 'leave_id';
public $timestamps = false;
/**
* Relationships
*/
public function hoursStatus()
{
return $this->belongsTo('App\Models\Hours\HoursStatusType', 'leave_status_code');
}
這是HoursStatusType模型:
<?php
namespace App\Models\Hours;
use Illuminate\Database\Eloquent\Model;
class HoursStatusType extends Model {
/**
* Model Setup
*/
protected $table = 'leave_status_type';
protected $primaryKey = 'leave_status_code';
public $timestamps = false;
/**
* Relationships
*/
public function hours()
{
return $this->hasMany('App\Models\Hours\Hours');
}
}
基本上,小時數的PTO請求具有狀態(例如,待處理,已批准等)。 HoursStatusType只有4行,它屬於Hours請求中的許多行。
我對“小時”這樣的要求很高:
$requests = Hours::with('hoursStatus')->get();
foreach($requests as $r){
print_r($r->hoursStatus);
}
當我嘗試使用foreach循環將其打印出來時,hoursStatus關系為空。 但是,當我在沒有急切加載的情況下調用它時,就可以了。 自從4.2升級以來(除了添加命名空間),我唯一更改的是將hasStatus關系從hasOne更改為belongsTo。 另外幾篇文章提到更改它應該可以解決它。 沒那么多。
我想念什么嗎? 謝謝!
您應該添加public $incrementing = false;
當PK不是自動遞增的int時,將其設置為模型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.