为了账号安全,请及时绑定邮箱和手机立即绑定

如何为 wp_rest_api 连接两个 MySQL 表

如何为 wp_rest_api 连接两个 MySQL 表

PHP
蛊毒传说 2023-04-15 14:15:35
在我的 WordPress 数据库中,我有三个表 wp_companies,它存储一些公司信息和 wp_product_types,它存储一堆公司可以自行分配的产品类型,然后我有 wp_company_products,它用于使用 ID 将产品类型分配给公司。下面是数据库外观的示例:wp_公司id | company_name | member_type | logo-----------------------------------------------------------------1  | Google       | full        | https://via.placeholder.com/150-----------------------------------------------------------------2  | Crunchyroll  | full        | https://via.placeholder.com/150wp_产品id | product_name    |----------------------1  | Car Insurance   |----------------------2  | House Insurance |----------------------3  | Life Insurance  |wp_company_productsid | company_id | product_id ----------------------------1  | 1          | 2----------------------------2  | 2          | 1----------------------------3  | 1          | 3这是我当前的 MySQL 查询,它只显示 wp_companies 中的数据    add_action('rest_api_init', function() {        register_rest_route('custom-routes/v1', 'members', array(            'methods' => 'GET',            'callback' => 'get_members'        ) );    });    function get_members($data) {        global $wpdb;        $query = $wpdb->get_results( "SELECT company_name, member_type, logo, site_url FROM {$wpdb->prefix}companies ORDER BY RAND()" );        foreach ( $query as $member ) {            $member_data[] = array(                "company_name" => $member->company_name,                "member_type" => $member->member_type,                "logo" => $member->logo,            );        }        return $member_data;    }这会在我的 api 端点上显示我的数据:[    {        "company_name":"Google",        "member_type":"full",        "logo":"https://via.placeholder.com/150",    },    {        "company_name":"Crunchyroll",        "member_type":"full",        "logo":"https://via.placeholder.com/150",    }]我如何构建我的 MySQL 查询才能实现这一目标?
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

请试试这个


function get_members($data) {

    global $wpdb;


    $query = $wpdb->get_results( "SELECT company_name, member_type, logo, site_url FROM {$wpdb->prefix}companies ORDER BY RAND()" );


    foreach ( $query as $member ) {

        $productQuery = $wpdb->get_results( "SELECT product_name FROM wp_products WHERE id IN (SELECT product_id from wp_company_products WHERE compony_id = '{$member->id}') " );

        $products = array();

        foreach ( $productQuery as $prduct ) {

            array_push($products ,$prduct->product_name);

        }


        $member_data[] = array(

            "company_name" => $member->company_name,

            "member_type" => $member->member_type,

            "logo" => $member->logo,

            "products" => $products

        );

    }


    return $member_data;

}


查看完整回答
反对 回复 2023-04-15
  • 1 回答
  • 0 关注
  • 59 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信