2015-11-05 97 views
0

我需要一些帮助来找出从下表结构中获取数据的最佳方法。与关系获取数据的最佳方式是什么?

表一:组织ID名称等

表二:位置ID名称等

表三: organisaiton_locations此表包含的关系如下:

id | organisation_id | location_id 
  • ID:自动递增
  • organisation_id外键引用ID在组织表
  • LOCATION_ID外键引用ID上的位置表

乳清我尝试这与hasManyThrough,我得到正确的项目数量,但它们映射到ID而不是location_id

class Organisation extends Model 
{ 

    public function locations() 
    { 
     return $this->hasManyThrough('App\Models\Location', 'App\Models\OrganisationLocation', 'organisation_id', 'id'); 
    } 

} 

你能帮我理解我该如何获取集合中与组织有关的所有位置,以便可以在变换器中使用。

在此先感谢。

回答

0

你不必使用hasManyThough只是使用正常的一个,与你试图访问第三级关系,在你的情况下,它不是。

简单地将其替换为:

class Organisation extends Model 
{ 

    public function locations(){ 
     return $this->hasMany(Location::class,'organisaiton_locations', 'organisation_id', 'location_id')->withTimestamps(); 
    } 

} 

,并请记得导入您的Location类(第一个参数在hasMany功能),或者只是用它作为字符串,你做

如果你不

”的方法没有时间戳在你的分界表中,然后从上面的代码末尾删除这->withTimestamps()

+1

Thanks @mohamed,我选择使用ManyToMany方法,通过根据Laravel要求重命名表名并且它工作得很好。 –

+0

@MohitAneja很好听:) –

0

我的一个朋友建议使用ManyToMany关系与这种表关系及其作品pe rfect。如果你遇到这种情况,按照字母顺序使用ManyToMany和正确的表名,并且按照框架工作,不用任何黑客。

干杯!

相关问题