2013-05-20 4 views
0

저는 Eloquent에서 many-to-many-to-many 관계를 원합니다. 나는 3 개 테이블Eloquent와의 다 대다 관계가 Laravel입니까?

  • 클라이언트 각 클라이언트가 많은 자산을 보유 할 수
  • 제품

  • 자산이있다. 각 저작물에는 많은 제품이있을 수 있습니다. [| CLIENT_ID | ASSET_ID ID]
  • asset_products 순간

    은, 그들이이 개 중간 테이블
    • client_asset

      연결되어 [ID | ASSET_ID | PRODUCT_ID]

    난 내가 생각 이 중간 테이블을 다른 중간 테이블과 함께 연결해야합니다.

    • clie nt_asset_asset_products [id | client_asset_id | asset_products_id]

    그러나 이것은 Eloquent에서 허용됩니까? 그것은 가능한가? 그리고 그것은 좋은 연습입니까 ??

    어떻게 새로운 중간 테이블 2 개 중간 테이블을 연결할? 당신은 클라이언트가 많은 버스를 가진 것으로 상상하고 각 버스는 많은 승객을 가질 수있는 경우

    ...이 난 후 것입니다.

    도움/정보를 보내 주셔서 감사합니다.

  • 답변

    0

    괜찮습니다. 클라이언트가 소유하고있는 제품을 결정하는 것은 ORM에 달려 있으며 이미 DB에 모든 정보가 있습니다. 관계에 대한 제대로라는 방법을 사용하면이 같은 열망로드를 사용할 수 있습니다 ...이 뭔가 있다면 당신은 또한

    $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.*'); 
    

    같은 것을 수행하여 제품의 단순 목록을 얻을 수 내가

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

    했다 종종 클라이언트 모델에 메소드로 추가 할 것입니다.