Laravel与4张表

时间:2016-12-06 11:59:50

标签: php laravel-5 orm eloquent

基本上,我有4张桌子。

表1:Fylker(县) 表2:Kommuner(市政当局) 表3:Poststed(邮政) 表4:Postnumre(Zip)

我目前正在使用Laravel 5.3,数据库已设置并播种。 现在,我想知道的是,我应该使用4种不同的型号吗? 每个表都与前一个表有关系。

我想要的是从Fylker获取一行,然后使用某种关系来获得与Fylke相关联的Kommuner,并使用另一种关系获得所有相关的Poststeder和另一种关系以获得所有Postnumre。

这是我想要实现的目标:

$fylke -> kommuner -> poststeder -> postnumre;

我该怎么做?

enter image description here

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

在Laravel中,为每张桌子准备模型是一种很好的做法。你可以这样解决你的问题:

在Fylker模型中:

public function kommuners(){
  return hasMany(Kommuner::class);
}

public function poststeds(){
    $kommuners = $this->kommuners;
    $poststeds = array();
    foreach ($kommuners as $kommuner) {
        $poststeds[] = $kommuner->poststeds;
    }
}

public function postnumres() {
    $poststeds = $this->poststeds;
    $postnumres = array();
    foreach ($poststeds as $poststed) {
        $postnumres[] = $poststed->postnumres;
    }
}

在Kommuner模型中:

public function poststeds() {
    return $this->hasMany(Poststed::class);
}

在Poststed模型中:

public function postnumres() {
    return $this->hasMany(Postnumre::class);
}

您可以从Postnumres获取所有Fylke,如下所示:$fylke->postnumres