在 CakePHP 中使用两个表在 Json 中获取格式化响应
Get formatted response in Json using two tables with CakePHP
大家好,我是 cake php 的新手,正在努力格式化 JSON 响应 Cake PHP 代码是
public function getdata() {
$responce = array();
$conn = ConnectionManager::get('default');
$stmt = $conn->execute('select * from mst_categories a inner join mst_subcategories b on a.category_id=b.category_id');
$turnos = $stmt->fetchAll('assoc');
$responce['status'] = 1;
$responce['message'] = 'Category Data';
$responce['data'] = $turnos;
$this->set(compact('responce'));
$this->set('_serialize', ['responce']);
}
结果我得到 JSON 响应
{
"responce": {
"status": 1,
"message": "Category Data",
"data": [
{
"category_id": "2",
"category_name": "testing",
"category_avtar": "C:\xampp\htdocs\update\webroot\img\cat_images\5311-3.jpg",
"subcategory_id": "1",
"subcategory_name": "New Subcategory",
"subcategory_avtar": "C:\xampp\htdocs\update\webroot\img\subcat_images\8580-2820-3.jpg"
},
{
"category_id": "2",
"category_name": "testing",
"category_avtar": "C:\xampp\htdocs\update\webroot\img\cat_images\5311-3.jpg",
"subcategory_id": "2",
"subcategory_name": "Testing",
"subcategory_avtar": "C:\xampp\htdocs\update\webroot\img\subcat_images\1232-5311-3.jpg"
}
]
}
}
虽然我想要 JSON 描述的输出
[
{
"categoryId": 11,
"categoryName": "cloths",
"subCategoryData": [
{
"subCategoryName": "jeans",
"subCategoryId": 0
},
{
"subCategoryName": "shirt",
"subCategoryId": 1
}
]
},
{
"categoryId": 12,
"categoryName": "electronics",
"subCategoryData": [
{
"subCategoryName": "TV",
"subCategoryId": 2
},
{
"subCategoryName": "fridge",
"subCategoryId": 3
}
]
}
]
我不知道如何才能获得这种类型的响应,请帮助我解决这个问题
打电话时
$this->loadModel('MstCategories');
$data= $this->MstSubcategories->find()->contain(['MstCategories']);
$this->set(compact('data'));
$this->set('_serialize', ['data']);
我收到这样的回复
{
"data": [
{
"subcategory_id": 1,
"subcategory_name": "New Subcategory",
"subcategory_avtar": "C:\xampp\htdocs\update\webroot\\img\subcat_images\8580-2820-3.jpg",
"category_id": 2,
"mst_category": {
"category_id": 2,
"category_name": "testing",
"category_avtar":
"C:\xampp\htdocs\niattaupdate\webroot\\img\cat_images\5311-3.jpg"
}
},
{
"subcategory_id": 2,
"subcategory_name": "Testing",
"subcategory_avtar": "C:\xampp\htdocs\niattaupdate\webroot\\img\subcat_images\1232-5311-3.jpg",
"category_id": 2,
"mst_category": {
"category_id": 2,
"category_name": "testing",
"category_avtar": "C:\xampp\htdocs\niattaupdate\webroot\\img\cat_images\5311-3.jpg"
}
}
]
}
谢谢
您不需要执行SQL命令。如果你已经烘焙过模型,你可以试试下面的代码
public function getdata()
{
// if in controller other than MstCategoriesController
$this->loadModel('MstCategories');
$data = $this->MstCategories->find()
->contain([
'MstSubcategories'
]);
$this->set(compact('data'));
$this->set('_serialize', ['data']);
}
大家好,我是 cake php 的新手,正在努力格式化 JSON 响应 Cake PHP 代码是
public function getdata() {
$responce = array();
$conn = ConnectionManager::get('default');
$stmt = $conn->execute('select * from mst_categories a inner join mst_subcategories b on a.category_id=b.category_id');
$turnos = $stmt->fetchAll('assoc');
$responce['status'] = 1;
$responce['message'] = 'Category Data';
$responce['data'] = $turnos;
$this->set(compact('responce'));
$this->set('_serialize', ['responce']);
}
结果我得到 JSON 响应
{
"responce": {
"status": 1,
"message": "Category Data",
"data": [
{
"category_id": "2",
"category_name": "testing",
"category_avtar": "C:\xampp\htdocs\update\webroot\img\cat_images\5311-3.jpg",
"subcategory_id": "1",
"subcategory_name": "New Subcategory",
"subcategory_avtar": "C:\xampp\htdocs\update\webroot\img\subcat_images\8580-2820-3.jpg"
},
{
"category_id": "2",
"category_name": "testing",
"category_avtar": "C:\xampp\htdocs\update\webroot\img\cat_images\5311-3.jpg",
"subcategory_id": "2",
"subcategory_name": "Testing",
"subcategory_avtar": "C:\xampp\htdocs\update\webroot\img\subcat_images\1232-5311-3.jpg"
}
]
}
}
虽然我想要 JSON 描述的输出
[
{
"categoryId": 11,
"categoryName": "cloths",
"subCategoryData": [
{
"subCategoryName": "jeans",
"subCategoryId": 0
},
{
"subCategoryName": "shirt",
"subCategoryId": 1
}
]
},
{
"categoryId": 12,
"categoryName": "electronics",
"subCategoryData": [
{
"subCategoryName": "TV",
"subCategoryId": 2
},
{
"subCategoryName": "fridge",
"subCategoryId": 3
}
]
}
]
我不知道如何才能获得这种类型的响应,请帮助我解决这个问题 打电话时
$this->loadModel('MstCategories');
$data= $this->MstSubcategories->find()->contain(['MstCategories']);
$this->set(compact('data'));
$this->set('_serialize', ['data']);
我收到这样的回复
{
"data": [
{
"subcategory_id": 1,
"subcategory_name": "New Subcategory",
"subcategory_avtar": "C:\xampp\htdocs\update\webroot\\img\subcat_images\8580-2820-3.jpg",
"category_id": 2,
"mst_category": {
"category_id": 2,
"category_name": "testing",
"category_avtar":
"C:\xampp\htdocs\niattaupdate\webroot\\img\cat_images\5311-3.jpg"
}
},
{
"subcategory_id": 2,
"subcategory_name": "Testing",
"subcategory_avtar": "C:\xampp\htdocs\niattaupdate\webroot\\img\subcat_images\1232-5311-3.jpg",
"category_id": 2,
"mst_category": {
"category_id": 2,
"category_name": "testing",
"category_avtar": "C:\xampp\htdocs\niattaupdate\webroot\\img\cat_images\5311-3.jpg"
}
}
]
}
谢谢
您不需要执行SQL命令。如果你已经烘焙过模型,你可以试试下面的代码
public function getdata()
{
// if in controller other than MstCategoriesController
$this->loadModel('MstCategories');
$data = $this->MstCategories->find()
->contain([
'MstSubcategories'
]);
$this->set(compact('data'));
$this->set('_serialize', ['data']);
}