Laravel 5.3 属于同一个 table 的关系没有显示任何结果
Laravel 5.3 belongsTo relation on same table shows no result
我想在同一个 table 上建立关系,但我不确定是否可能...
我有一个 table jobs,其中包含字段 id
、name
和 parent_id
。我想找一些工作和他们的 parent(如果他们有的话,还有他们自己的 parent,等等)。
这是我的模型:
class Job extends Model
{
public function jobParent()
{
return $this->belongsTo('App\Job', 'parent_id');
}
}
在我的控制器中,我这样做了:
$select = Job::take(10)
->with('jobParent')
->get();
我显示了查询,我可以看到关系:
select * from jobs where id in (?, ?, ?)
我的 10 个工作有 3 个 parent,所以它看起来是正确的,但它 returns parent:我的每个工作都为 null...
你看到我错过了什么了吗?
我将此添加到我的请求中,因为我还想要 parent 的 parent :
->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);
这给了我这个:
{
"success": 1,
"totalCount": 10706,
"nextOffset": 10,
"jobs": [
{
"name": "xxx",
"parent_id": 15,
"job_parent": null
}, ...
我试图为我的工作做一个 foreach 和一个 var_dump($job->jobParent) 但它也说 NULL...
我只是不明白为什么它不存储结果...
我弄明白了:job.id 是一个字符串,我将它投射到我的模型中并且运行良好:
protected $casts = ['id' => 'string'];
我想在同一个 table 上建立关系,但我不确定是否可能...
我有一个 table jobs,其中包含字段 id
、name
和 parent_id
。我想找一些工作和他们的 parent(如果他们有的话,还有他们自己的 parent,等等)。
这是我的模型:
class Job extends Model
{
public function jobParent()
{
return $this->belongsTo('App\Job', 'parent_id');
}
}
在我的控制器中,我这样做了:
$select = Job::take(10)
->with('jobParent')
->get();
我显示了查询,我可以看到关系:
select * from jobs where id in (?, ?, ?)
我的 10 个工作有 3 个 parent,所以它看起来是正确的,但它 returns parent:我的每个工作都为 null...
你看到我错过了什么了吗?
我将此添加到我的请求中,因为我还想要 parent 的 parent :
->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);
这给了我这个:
{ "success": 1, "totalCount": 10706, "nextOffset": 10, "jobs": [ { "name": "xxx", "parent_id": 15, "job_parent": null }, ...
我试图为我的工作做一个 foreach 和一个 var_dump($job->jobParent) 但它也说 NULL...
我只是不明白为什么它不存储结果...
我弄明白了:job.id 是一个字符串,我将它投射到我的模型中并且运行良好:
protected $casts = ['id' => 'string'];