2016-09-12 2 views
0

4.2에서 Laravel 5.2로 업그레이드하고 관계에서 Eager Loading을 사용할 때 null을 반환하지만 수동으로 호출 할 수있는 이상한 문제로 실행됩니다.Laravel 5.2 EagerLoading 관계가 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 개의 행만 있으며 많은 시간 요청에 속합니다.

내가 같은 시간에 큰 요구하고 있어요 : 나는 foreach 루프를 사용하여이를 인쇄하려고하면

$requests = Hours::with('hoursStatus')->get(); 

foreach($requests as $r){ 
    print_r($r->hoursStatus); 
} 

을의 hoursStatus 관계가 비어 있습니다. 그러나, 열심히 선적하지 않고 그것을 부를 때, 괜찮습니다. 4.2에서 업그레이드 한 이후로 변경된 유일한 것은 namespace를 추가하는 것 외에 hasOne에서 hoursStatus 관계를 belongsTo로 변경하는 것입니다. 또 다른 몇 개의 게시물은 그것을 변경해야한다고 언급했다. 별로.

내가 누락 된 항목이 있습니까? 감사!

답변

1

PK가 자동 증가 int가 아닌 경우 모델 설정에 public $incrementing = false;을 추가해야합니다.

+0

Wooooooooooooow. 나는 그 존재를 전혀 몰랐다. 그거였다! 관계를 belongsTo로 바꾸고 그 라인을 타입 모델에 추가하는 것은 매력처럼 작용했습니다. 나는 그것을 믿을 수 없다. – cbloss793

+0

오, 감사합니다 @alejandro !! :) – cbloss793

+0

@ cbloss793 내가 기꺼이 도와 줘서 기쁩니다.) – alepeino