我想在同一张表上建立一个关系,但我不确定这是可能的…
我有一个表作业字段id
, name
和parent_id
。我想找一些工作和他们的父母(如果他们有父母的话,还有他们自己的父母,等等)。
这是我的模型:
class Job extends Model
{
public function jobParent()
{
return $this->belongsTo('AppJob', 'parent_id');
}
}
在我的控制器中,我这样做:
$select = Job::take(10)
->with('jobParent')
->get();
我显示了查询,我可以看到一个关系:
select * from jobs where id in (?), ?, ?)
我有3个父母为我的10个工作,所以它似乎是正确的,但它返回parents: null为我的每个工作…
你知道我错过了什么吗?
我把这个添加到我的请求中,因为我也想要父元素的父元素:
->with(['jobParent' => function($query) {
$query->with('jobParent');
}]);
我可以看到这两个查询,所以它确实工作,它只是不显示!
select * from jobs where id in (?), ?, ?)
select * from jobs where id in (?)
吗?)
我这样输出我的结果:
$return = [
'success' => 1,
'totalCount' => $totalCount,
'nextOffset' => $offset+$nb,
'jobs' => $jobs
];
$code = 200;
return response()->json($return, $code);
它给了我这个:
{"成功":1、"totalCount":10706年,"nextOffset":10"工作":({"名称":"xxx","parent_id":15日"job_parent":null},…
我试图做一个foreach我的工作和var_dump($job->jobParent),但它说NULL以及…
我只是不明白为什么它不存储结果…
我明白了:工作。id是一个字符串,我把它在我的模型,它工作得很好:
protected $casts = ['id' => 'string'];