我从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行,属于许多小时请求。
我在小时里做了很大的请求,如:
$requests = Hours::with('hoursStatus')->get();
foreach($requests as $r){
print_r($r->hoursStatus);
}
当我尝试使用foreach循环打印出来时,hoursStatus关系为空。但是,当我在没有急切装载的情况下打电话时,它很好。自从4.2升级(除了添加命名空间)以来,我唯一改变的是将来自hasOne的hoursStatus关系更改为belongsTo。另外几篇帖子提到改变它应该修复它。没那么多。
我错过了什么吗?谢谢!
答案 0 :(得分:1)
当PK不是自动增量int时,您应该将public $incrementing = false;
添加到模型设置中。