2017-08-01 51 views
1

林試圖查詢產品表顯示的以下模式中的數據庫 - >Laravel查詢檢索只有一對使用關係值的兩個表之間「加入」

表1 - >產品:

表:

enter image description here

隨着模型product.php與表products_details的關係 - >

public function productdetails() 
    { 
     return $this->hasMany('App\Models\ProductDetails', 'productId', 'id'); 
    } 

表2 - 爲每個產品> products_details表顯示許多值對(名稱/值):

表:

enter image description here

隨着模型productdetails.php與表的產品的關係 - >

public function product() 
{ 
    return $this->hasOne('App\Models\Product', 'productSku', 'productId'); 
} 

使用廷克查詢模式,我跑:

App \ Models \ Product :: join('products_details','products.productSku', '=','products_details.productId') - > take(1) - > get();

給出了結果:

Illuminate\Database\Eloquent\Collection {#1787 
    all: [ 
     App\Models\Product {#1779 
     id: 1, 
     productName: "Samsung - Galaxy Core Prime 4G", 
     productSku: "3953367", 
     more info... 
     created_at: "2017-04-08 18:28:46", 
     updated_at: "2017-04-08 18:28:46", 
     deleted_at: null, 
     productId: 3953367, 
     name: "Operating System", 
     value: "Android 4.4 KitKat", 
     }, 
    ], 
    } 

我的問題是,我怎麼可以查詢,以便接收相關聯的productId所有名稱/值的結果,考慮到現在我只接收第一對值包含在product_details表中,但不是與該productId關聯的所有名稱/值。

 productId: 3953367, 
    name: "Operating System", 
    value: "Android 4.4 KitKat", 

謝謝!

------------------------------- UPDATE -------------- --------------------

我犯了一個錯誤,在評論中他們提出了一個解決方案。正確的查詢必須是:

App\Models\Product::where('productSku', '=', SkuNumber) 
        ->join('products_details', 'products.productSku', '=', 'products_details.productId') 
        ->get() 
+1

如果給'productId'添加'where'子句並刪除'get(1)'? –

+2

嘗試刪除' - >採取(1)'在你修補程序查詢;) – Adrenaxus

+0

@Adrenaxus你是對的!非常感謝。 –

回答

0

解決方案: 我犯了一個錯誤,並在評論@Adrenaxus和@ka_lin解決的解決方案。正確的查詢必須是:

App\Models\Product::where('productSku', '=', SkuNumber) 
        ->join('products_details', 'products.productSku', '=', 'products_details.productId') 
        ->get() 
相關問題