我试图查询在数据库中显示以下架构的产品表 - >
表1 - >产品:
表:
与model product.php中的table 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');
}
使用Tinker查询模型我运行:
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",
谢谢你!
-------------------------------更新--------------- -------------------
我犯了一个错误,在评论中他们提出了一个解决方案。正确的查询必须是:
App\Models\Product::where('productSku', '=', SkuNumber)
->join('products_details', 'products.productSku', '=', 'products_details.productId')
->get()
答案 0 :(得分:0)
解决方案: 我犯了一个错误,并在评论@Adrenaxus和@ka_lin解决了一个问题。正确的查询必须是:
App\Models\Product::where('productSku', '=', SkuNumber)
->join('products_details', 'products.productSku', '=', 'products_details.productId')
->get()