Наконец, по-видимому, есть пара способов получить данные из таблицы locations
в area_tests
Попробовал на повозке, и все работает,
Во-первых, мне нужно создать Сводная модель для моей сводной таблицы:
class LocationAreaType extends Pivot{
public function location(){
return $this->belongsTo(Location::class);
}
public function areaType(){
return $this->belongsTo(AreaType::class);
}
public function AreaTests(){
return $this->hasMany(AreaTest::class, 'location_area_type_id');
}
}
Я могу использовать hasManyThrough
отношение, которое мне нужно создать в моей таблице местоположений
public function areaTests()
{
return $this->hasManyThrough(
AreaTest::class,
LocationAreaType::class,
'location_id',
'location_area_type_id');
}
таким образом Я могу легко получить тесты области с помощью $location->areaTests
. Моя проблема не заключалась в определении location_area_type_id
как иностранного. Вы должны определить это, по-видимому, когда я расширяю сводную область и использую hasMany laravel не распознает внешний ключ автоматически.
Таким образом, я также могу получить к нему доступ через сводную таблицу с помощью
$location->areaType[0]->pivot->areaTests
Но , поскольку laravel распознает только внешний ключ из обеих таблиц location_id
и area_type_id
, я должен включить id
сводной таблицы чтобы получить данные таблицы AreaTest (поскольку она определяется по стороннему признаку location_area_type_id
Поэтому в модели Location мне нужно получить столбец
public function poolTypes()
{
// Get the ID of the pivot table to get the poolTests table (connected with ID column)
return $this->belongsToMany(PoolType::class)
->using(LocationPoolType::class)
->withPivot('id');
}