Laravel - 嵌套关系显示为null

时间:2017-08-21 11:55:20

标签: php laravel

我有一个tw层嵌套的hasOne关系,最终的关系似乎是给出了空值。

我的JobApplication关系具有以下内容:

<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;

class JobApplication extends Model
{
    protected $table = 'job_applications';
    protected $primaryKey = 'job_application_id';

    public function jobrequest()
  {
      return $this->hasOne('App\Model\JobRequest', 'job_request_id', 'job_request_id');
  }
}

我的JobRequest模型具有以下内容:

<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;

class JobRequest extends Model
{
    protected $table = 'job_requests';
    protected $primaryKey = 'job_request_id';

  public function jobgroup()
  {
      return $this->hasOne('App\Model\JobGroup', 'job_group_code', 'job_group_code');
  }

    public function jobapplication()
  {
      return $this->belongsTo('App\Model\JobApplication', 'job_request_id');
  }
}

我的JobGroup有以下内容:

<?php

namespace App\Model;
use Carbon;

use Illuminate\Database\Eloquent\Model;

class JobGroup extends Model
{
    protected $table = 'job_groups';
    protected $primaryKey = 'job_group_code';

  public function jobrequest()
  {
      return $this->belongsTo('App\Model\JobRequest', 'job_group_code');
  }
}

我在控制器中访问它们是这样的:

    $job_applications = JobApplication::with(['jobrequest', 'jobrequest.jobgroup'])
        ->where('user_id', Auth::id())
        ->first();

它在Debugbar上查询(是的,job_groups的查询是否给出了数据),但当我转储$job_applications时,jobgroup显示为null

enter image description here

1 个答案:

答案 0 :(得分:0)

不需要急于加载它。我可以像这样访问它

$job_applications = JobApplication::with('jobrequest')->where('user_id', Auth::id())->first();
dd($job_applications->jobrequest->jobgroup);