json - 以嵌套的 Json 格式返回响应
问题描述
我正在尝试以嵌套 json 格式获取我的响应
[
{
"recipe_id":"33",
"e_name":"crispy",
"e_desc":"Crispy Gingersnaps",
"calries":"500",
"steps":[
{
"step_id":"22",
"recipe_id":"33",
"step_number":3,
"instruction":'here is the instructions',
}
{
"step_id":"23",
"recipe_id":"34",
"step_number":4,
"instruction":'here is the instructions',
}
{
"step_id":"23",
"recipe_id":"35",
"step_number":5,
"instruction":'here is the instructions',
}
]
}
]
这是我的代码
$query = new \yii\db\Query();
$recipes = $query->select(['recipe.recipe_id','recipe.image','recipe.'.$name,'recipe.'.$small_desc,'recipe.person_count',
'recipe.calories','recipe.period','recipe.'.$desc,'recipe_step.instruction'])->from('recipe')
->where(['recipe.recipe_id' => $recipe_id])
->innerJoin("recipe_step","recipe.recipe_id=recipe_step.recipe_id");
我得到了结果,但 json 格式不像我期望的那样
解决方案
我不知道是否有这样的选项可以仅通过查询来实现此行为。但是您可以实现与步骤关系的接收关系并使用 yii2 方法添加步骤。
配方模型
public function getStep()
{
return $this->hasMany(Step::className(), ['recipe_id' => 'id']);
}
您希望它在哪里获得:
$model = Recipe::find()->where([Recipe::tableName() . '.id' => $recipe_id])->innerJoin('step')->asArray()->one();
结果,您获得了所描述的数据结构。
推荐阅读
- javascript - 每个 React 类方法的“函数缺少返回类型”
- vue.js - Vuetify 进度条不同步值
- android - RxJava 和 Observable 改造 API 调用
- firebase - Firebase - 从域 A 重定向到域 B
- r - 无法在闪亮的 DT::renderdatatable 中显示页码
- java - 使用持久性 API 中的 EntityManagerFactory
- python - 用 `data_key` 定义的 Marshmallow 字段和用 `attribute` 定义的 Marshmallow 字段有什么区别(标识符颠倒了?)
- python - 如何解码原始格式的 Gmail API 获取消息以提取链接
- python - 对列表中的 Python 字典对象进行排序
- webpack - 是否可以在长时间运行的“观察”脚本之后运行“观察后”脚本