Laravel 5.3 属于同一个表上的关系显示没有结果

问题描述 投票:0回答:1

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

我有一个表 jobs,其中包含字段

id
name
parent_id
。我想找一些工作和他们的父母(以及他们自己的父母,如果他们有的话,等等)。

这是我的模型:

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

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

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

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

从 id 为 (?, ?, ?) 的职位中选择 *

我的 10 份工作有 3 个父母,所以这似乎是正确的,但它为我的每份工作返回parent: 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);

这给了我这个:

{
  "success": 1,
  "totalCount": 10706,
  "nextOffset": 10,
  "jobs": [
    {
      "name": "xxx",
      "parent_id": 15,
      "job_parent": null
    }, ...

我尝试对我的工作执行 foreach 和 var_dump($job->jobParent) 但它也显示 NULL...

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

laravel-5 eloquent relationship
1个回答
0
投票

我发现:job.id 是一个字符串,我将它投射到我的模型中并且工作正常:

protected $casts = ['id' => 'string'];
© www.soinside.com 2019 - 2024. All rights reserved.