显示不完整结果的laravel急切加载
我在执行快速加载时遇到问题 有两张桌子显示不完整结果的laravel急切加载,laravel,laravel-5.2,Laravel,Laravel 5.2,我在执行快速加载时遇到问题 有两张桌子 带栏目的服务 ser|U id | ser|U name | ser|U hr 带栏目的组织 组织id |服务id |组织名称|组织描述 服务和组织是1对1关系,即1个服务仅与1个组织相关 因此,在我的服务模型中,我编写了一个函数来显示这种关系 public function organization(){ return $this->hasOne('App\Organization','org_id'); } 现在在我的服务控制器中 我试
public function organization(){
return $this->hasOne('App\Organization','org_id');
}
现在在我的服务控制器中
我试图用急切的加载来构建雄辩的查询
$services = Service::with('organization')->orderBy('ser_id','DESC')->get();
当我转储结果时,一半的关联丢失,也就是说,当我显示带有组织的服务时,虽然它应该显示组织的详细信息,但在一半的结果中它丢失了
所以我想知道为什么查询会获取某些服务的组织结果,而有些服务是空的
是否有任何方法可以调试查询如何获取结果
结果:
[attributes:protected] => Array
(
[ser_id] => 6092
[ser_date] => 2018-03-18
[ser_hr] => 5
[ser_min] => 0
[std_id] => 362
[serty_id] => 4
[sers_id] => 3
[school_year] => 2016-08-23
[created_at] => 0000-00-00 00:00:00
[updated_at] => 0000-00-00 00:00:00
[adv_id] => 109
[flag] => 0
)
[original:protected] => Array
(
[ser_id] => 6092
[ser_date] => 2018-03-18
[ser_hr] => 5
[ser_min] => 0
[std_id] => 362
[serty_id] => 4
[sers_id] => 3
[school_year] => 2016-08-23
[created_at] => 0000-00-00 00:00:00
[updated_at] => 0000-00-00 00:00:00
[adv_id] => 109
[flag] => 0
)
[relations:protected] => Array
(
[organization] =>
)
如您所见,我应该获得ser_id 6092的组织结果,但在查询中显示为空白。您的关系不太正确 hasOne()方法的第二个参数是外键。也就是说,organizations表上连接两个表的字段。在这种情况下,该字段是
seru-id
,而不是org-id
更改第二个参数,您就可以开始了:
public function organization()
{
return $this->hasOne('App\Organization', 'ser_id');
}
您的组织表具有来自服务表的外键
seru id
,所以您应该在组织模型中定义关系,而不是在服务模型中定义关系
在组织模式上,
public function service(){
return $this->hasOne('App\Service','ser_id');
}
在控制器中
$data = Organization::with('service')->orderBy('org_id','DESC')->get();
然后你可以像这样访问服务
$data->service
希望能有帮助