三个相关表 - 如何处理

时间:2014-02-08 14:48:00

标签: laravel laravel-4

众议院(身份证,姓名)

(身份证,姓名)

电话(身份证号码)

想法:房子里有很多人,每个人可能有很多号码。

关系表:

house_has_people_has_phone (id,house_id,people_id,phone_id)

所以,我想建立这个:

Array
(
  [0] => Array
   (
     [id] 1
     [name] House 01
     [people] => Array
      (
        [0] => Array
         (
           [id] 1
           [name] John
           [phone] => Array
            (
              [0] => Array
               (
                 [id] 1
                 [number] 555
               )
              [1] => Array
               (
                 [id] 2
                 [number] 777
               )
            )
          )
         [1] => Array
          (
            [id] 2
            [name] Mick
            [phone] => Array
             (
               [0] => Array
                (
                  [id] 3
                  [number] 999
                )
             )
          )
       )
    )
)

最后,我怎么能在Laravel中联系它?

1 个答案:

答案 0 :(得分:0)

PhoneHouse之间确实没有任何关系,所以你不想做你正在考虑的3级关系。别担心,Laravel会让你在时机成熟时检索你想要的数据结构(见下文),但最终的数据结果不是你应该如何建模的。

你也需要考虑反向关系......我假设一个People只能属于一个House,同样Phone只能属于一个People }}

在Laravel /models

House.php

class House extends Eloquent {
    public function people() {
        return $this->hasMany('People');
    }
}

People.php

class People extends Eloquent {
    public function house() {
        return $this->belongsTo('House');
    }

    public function phone {
        return $this->hasMany('Phone');
    }
}

Phone.php

class Phone extends Eloquent {
    public function people() {
        return $this->belongsTo('People');
    }
}

模型往往是单细胞的,因此您可能希望将People重命名为Person