2013-05-20 83 views
0

我想在Eloquent中拥有多对多的关系。 我有3个表Laravel与雄辩之间的多对多关系?

  • 客户
  • 资产
  • 产品

每个客户可以有很多的资产。 每个资产可以有许多产品。 [| CLIENT_ID | ASSET_ID ID]

  • asset_products

    此刻,它们与2个中间表

    • client_asset连接[ID | ASSET_ID | PRODUCT_ID]

    我想我会现在需要将这两个中间表与另一个中间表连接在一起

    • clie nt_asset_asset_products [id | client_asset_id | asset_products_id]

    但是,这是否允许在雄辩?可能吗?这是很好的做法?

    我将如何连接2个中间表与新的中间表?

    如果你认为它是一个有很多巴士的客户,每辆巴士都可以有很多乘客......这就是我所追求的。

    感谢您的任何帮助/信息。

  • 回答

    0

    没问题。由ORM决定客户拥有哪些产品,并且它已经拥有数据库中的所有信息。随着关系的正确命名方法,您可以使用预先加载这样的...

    $client = Client::with(array('assets', 'assets.products'))->where_id(9000)->first(); 
    
    // $client->assets array of assets 
    // $client->assets[0]->products array of products 
    

    您也可以通过执行类似

    $products = Product::join('asset_products', 'asset_product.products.id', '=', 'products.id') 
        ->join('client_asset', 'client_asset.assets_id', '=', 'asset_products.assets_id') 
        ->where('client_asset.client_id', '=', 9000) 
        ->get('products.*'); 
    

    获得的产品的平面列表如果这东西我是我经常会把它作为一种方法添加到客户端模型中。