yii2 使用hasMay关联查询的问题

发布于 2022-09-11 15:35:14 字数 1160 浏览 15 评论 0

 $order = Orders::find()
        ->where(['order_sn' => $order_sn, 'user_id' => Yii::$app->user->identity->id])
        ->all();
        



{
"success": true,
"code": 200,
"message": "OK",
"data": [
    {
        "id": "658",
        "order_sn": "201811088879168432",
        "user_id": "290",
        "order_status": 15,
        "shipping_id": 0,
        "shipping_name": "",
        "pay_id": 0,
        "pay_name": "",
        "goods_amount": "1067.00",
        "user_discount": 100,
        "shipping_fee": "0.00",
        "pay_fee": "0.00",
        "integral_money": "0.00",
        "coupon_id": "0",
        "coupon": "0.00",
        "order_amount": "1067.00",
        "created_at": "1541658432",
        "pay_time": "0",
        "shipping_time": "0",
        "finish_time": "0",
        "shipping_no": "",
        "pay_note": "",
        "ip_address": "127.0.0.1",
        "region_id": 12,
        "coupon_code_id": null,
        "discount_amount": null
    }
]

}

ordes关联了多个表但是查询的json数据中只有order表的数据

之前在视图中如果想查询出关联数据 就使用结果集再次调用就行了 例如:$orders->user->email;
但是现在是api形式的 要如何处理呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风柔一江水 2022-09-18 15:35:14
$order = Orders::find()
            ->where(['order_sn' => $order_sn, 'user_id' => Yii::$app->user->identity->id])
            ->all();

$data = [];
foreach ($order as $k => $val) {
      $data[] = [
          'id' => $val->id,
          'order_sn' => $val->order_sn,
          'user_email' => $val->user->email,
           ...
      ];
}

return json_encode($data); 
暖心男生 2022-09-18 15:35:14

Model文件Orders.php中可以使用fields()方法的:

public function fields()
{
    $fields = parent::fields();
    $extraFields = ['user'];

    return array_merge($fields, $extraFields);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文