Laravel 5.3 belongsTo同一表上的关系显示没有结果

时间:2016-10-28 10:45:58

标签: eloquent relationship laravel-5.3

我想在同一张桌子上建立关系,但我不确定它是否可能......

我的表格作业包含字段idnameparent_id。我想得到一些工作和他们的父母(以及他们自己的父母,如果他们有一个,等等。)

这是我的模特:

class Job extends Model
{
    public function jobParent()
    {
        return $this->belongsTo('App\Job', 'parent_id');
    }
}

在我的控制器中,我这样做:

$select = Job::take(10)
               ->with('jobParent')
               ->get();

我显示了查询,我可以看到关系中的一个:

  

从id为(?,?,?)

的作业中选择*

我有10个父母为我的10个工作,所以看起来是正确但它返回父:我的每个工作都为null ...

你看到我错过了吗?

我将此添加到我的请求中,因为我还想要父母的父级:

->with(['jobParent' => function($query) {
    $query->with('jobParent');   
}]);

我可以看到两个查询,所以它确实有效,它只是不显示!

  

从id为(?,?,?)

的作业中选择*      

从id为(?,?)

的作业中选择*

我以这种方式输出结果:

$return = [
    'success' => 1,
    'totalCount' => $totalCount,
    'nextOffset' => $offset+$nb,
    'jobs' => $jobs
];
$code = 200;
return response()->json($return, $code);

Wich给了我这个:

  

{     “成功”:1,     “totalCount”:10706,     “nextOffset”:10,     “工作”: [       {         “名字”:“xxx”,         “parent_id”:15,         “job_parent”:null       },...

我试着做一些我的工作和一个var_dump($ job-> jobParent),但它也说 NULL ......

我只是不明白为什么它不存储结果......

1 个答案:

答案 0 :(得分:0)

我想通了:job.id是一个字符串,我在我的模型中输入它并且工作正常:

protected $casts = ['id' => 'string'];