林試圖查詢產品表顯示的以下模式中的數據庫 - >Laravel查詢檢索只有一對使用關係值的兩個表之間「加入」
表1 - >產品:
表:
隨着模型product.php與表products_details的關係 - >
public function productdetails()
{
return $this->hasMany('App\Models\ProductDetails', 'productId', 'id');
}
表2 - 爲每個產品> products_details表顯示許多值對(名稱/值):
表:
隨着模型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()
如果給'productId'添加'where'子句並刪除'get(1)'? –
嘗試刪除' - >採取(1)'在你修補程序查詢;) – Adrenaxus
@Adrenaxus你是對的!非常感謝。 –