2013-05-20 61 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.*'); 
    

    獲得的產品的平面列表如果這東西我是我經常會把它作爲一種方法添加到客戶端模型中。