У меня есть Cars
модель, которая принадлежит двум другим моделям Region, Subregion
.Модель автомобиля:
function region(){
return $this->belongsTo('App\Models\Region');
}
function subRegion(){
return $this->belongsTo('App\Models\Subregion');
}
Модель субрегиона:
class Subregion extends Model{
public $timestamps = false;
protected $fillable = [
'name'
];
public function cars(){
return $this->hasMany('App\Models\Car');
}
}
Регион:
class Region extends Model{
public $timestamps = false;
protected $fillable = [
'name'
];
public function cars(){
return $this->hasMany('App\Models\Car');
}
}
У меня есть запрос, который выбирает автомобили по регионам и субрегионам:
$queryCar= Car::with(array(
'region'=>function($query){
$query->select(['id', 'name']);
},
'subregion'=>function($query){
$query->select(['id', 'name']);
}
))->orderBy('id', 'DESC');
return $queryCar->get();
Таблица cars
имеет столбцы region_id
, subregion_id
.
Когда я пытаюсь зациклить автомобили, результат:
foreach ($cars as $p){
var_dump($p->subregion);
var_dump($p->region);
break;
}
Для региона я вижурезультат, который не равен NULL, но субрегиона нет.Я уверен, что это так, потому что, если я сделаю:
var_dump($p);
, я смогу увидеть и subregion_id
, и если я сделаю запрос к базе данных с этим идентификатором, будет строка субрегиона.
Странно, потому что для этих двоих все одинаково - субрегион / регион.