我需要一些帮助才能找到从下表结构中获取数据的最佳方法。
表一:组织ID名称等。
表二:位置ID名称等。
表三: organisaiton_locations此表包含如下关系:
id | organisation_id | location_id
Whey我尝试使用hasManyThrough,我得到了正确数量的项目,但它们被映射到 id 而不是 location_id 。
class Organisation extends Model
{
public function locations()
{
return $this->hasManyThrough('App\Models\Location', 'App\Models\OrganisationLocation', 'organisation_id', 'id');
}
}
您能帮我理解如何获取集合中与组织相关的所有位置,以便可以在变压器中使用。
提前致谢。
答案 0 :(得分: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 :(得分:0)
我的一个朋友建议使用ManyToMany与这种表关系的关系,它的作品很完美。如果您遇到类似这样的问题,请按字母顺序使用具有正确表名的ManyToMany,并且它可以按照框架工作,没有任何黑客攻击。
干杯!!