我的应用中有一个3表。products
,category
,attributes
产品hasMany类别和类别有很多属性关系。
我希望以json格式获取所有products
Category
详细信息和catgoey attributes
详细信息。我该怎么做?
目前我在我的控制器中尝试使用此功能:
public function index()
{
$productDetails = Product::all();
if(!empty($productDetails)) {
foreach ($productDetails as $key => $value) {
//print_r($value->id."</br>");
}
}
}
我想要的输出:
{
"productInformation": {
"id": 1,
"name": "productone",
"status": "Active",
"CategoryDetails": [
{
"id": 1,
"product_id": 1,
"categoryTitle": "categoryone",
"attribute" : [
{
"id": 1,
"product_id": 1,
"category_id": 1,
"title": "attrib-title-one",
},
{
"id": 2,
"product_id": 1,
"category_id": 1,
"title": "attrib-title-two",
},
]
}
]
}
}
关系:
在categories
表
$table->foreign('product_id')->references('id')->on('products');
在attributes
表上:
$table->foreign('product_id')->references('id')->on('products');
$table->foreign('category_id')->references('id')->on('categories');
我该怎么做?
答案 0 :(得分:2)
产品型号
public function categories(){
return $this->hasMany('App\Category','product_id');
}
类别模型
public function attributes(){
return $this->hasMany('App\Attribute','cat_id');
}
在控制器
中public function index()
{
$productDetails = Product::with('catgories.attributes')->get();
if(!empty($productDetails)) {
$jsonData = json_encode($productDetails->toArray());
}
}
答案 1 :(得分:0)
您可以在不同类别的模型中定义您的关系。属性,需要在产品模型中定义一个hasMany关系类别(命名类别),然后另一个在类别(命名属性)中有多个属性的模型。之后,您可以按照此过程准备数据数组
$productDetails = Product::all();
if(!empty($productDetails)) {
foreach ($productDetails as $key => $value) {
$productDetails[$key]['categorieDetails'] = $productDetails[$key]->categories;
foreach ($productDetails[$key]['categorieDetails'] as $key2 => $value2) {
$productDetails[$key]['categorieDetails'][$key2]['
attribute'] = $productDetails[$key]->categorieDetails[$key2]->attributes;
}
}
}
然后你可以使用json_encode来生成你的json数据
答案 2 :(得分:0)
在您的控制器中
alias pytest2="python ~/.local/lib/python2.7/site-packages/pytest.py"
alias pytest3="python3 ~/.local/lib/python3.6/site-packages/pytest.py"