用第三张桌子拉扯多对多

时间:2014-10-14 20:30:10

标签: laravel foreign-keys many-to-many pivot

我正在使用Laravel并试图从一个枢轴成员的外国关系中获取信息。 ERD如下。我建立了多对多的关系,以便我可以通过$ property->限制来获取财产限制,反之亦然。我正在努力的是当我获取此信息时如何添加限制类型描述。

$ property-> restriction 为我提供了type_id

 array(
     'id' => '1',
     'description' => 'Fish only',
     'restriction_types_id' => '1',
     'pivot' => array(
       'property_id' => '17',
       'restriction_id' => '1'
     )
   )

但是我希望使用 restriction_type description 代替其ID。

 array(
     'id' => '1',
     'description' => 'Fish only',
     'restriction_type' => 'Animals',
     'pivot' => array(
       'property_id' => '17',
       'restriction_id' => '1'
     )
   )

我的数据库表

╔═════════════╗      ╔════════════════════╗      ╔════════════════════╗
║  property   ║      ║property_restriction║      ║restriction         ║
╟─────────────╢      ╟────────────────────╢      ╟────────────────────╢
║id           ║——————║property_id         ║   ┌──║restriction_id      ║
║description  ║      ║restriction_id      ║───┘  ║desctiption         ║
╚═════════════╝      ╚════════════════════╝   ┌──║restriction_type_id ║
                                              │  ╚════════════════════╝
                                              │
                                              │
                     ╔═══════════════════╗    │
                     ║restriction_type   ║    │
                     ╟───────────────────╢    │
                     ║id                 ║────┘
                     ║description        ║
                     ╚═══════════════════╝

1 个答案:

答案 0 :(得分:0)

我相信您当前尝试访问数据的方式是通过动态属性。也许可以输入$property->restriction->restriction_type。 您也可以尝试以下列方式之一加载它:

$property->with('restriction','restriction.restriction_type')->get();

$property
    ->with('restriction')
    ->with('restriction.restriction_type')
    ->get();

如果这些方法都不起作用,我会研究Laravel的急切加载和动态属性,看看是否有某些东西需要在你们的关系中被改变。