我正在从4.2升级到Laravel 5.2,遇到了一个奇怪的问题,当我在一个关系上使用Eager Loading时,它返回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请求。
我正在做一个关于Hours的大请求,比如:
$requests = Hours::with('hoursStatus')->get();
foreach($requests as $r){
print_r($r->hoursStatus);
}
当我尝试使用foreach循环打印此内容时,hoursStatus关系为空白。然而,当我调用它时,没有急切加载,这很好。自从从4.2升级以来,我唯一改变的是(除了添加命名空间)将hoursStatus关系从hasOne更改为belongsTo。另外几个帖子提到,改变它应该修复它。其实不然。
我错过了什么吗?谢谢!
当PK不是一个自动递增的整型时,您应该将public $incrementing = false;
添加到您的模型设置中。