Написание INNER JOIN в wpdb WordPress

17 сент. 2015 г., 20:50:19
Просмотры: 14.4K
Голосов: 1

У меня проблема с написанием SQL запроса с INNER JOIN в WordPress. Эта логика точно должна работать, я проверил этот запрос в phpmyadmin и там всё работает

SELECT booking_calendars.cal_name
FROM booking_calendars 
INNER JOIN booking_reservation 
ON booking_calendars.id = booking_reservations.calendar_id
WHERE status LIKE 'pending'

Но в WordPress это не работает

$pending_reservations = $wpdb->get_results(" 
    SELECT booking_calendars.cal_name
    FROM'.$wpdb->prefix.'booking_calendars AS booking_calendars
    INNER JOIN' . $wpdb->prefix.'booking_reservation AS booking_reservations
    ON booking_calendars.id =  booking_reservations.calendar_id
    WHERE status LIKE 'pending'");

И затем

echo "<h2>Ожидающие бронирования: </h2><br>";
        var_dump( $pending_reservations);
        if($pending_reservations>0)
        {
        foreach ( $pending_reservations as $pending_reservation ) 
        {
            echo "<label>". $pending_reservation->cal_name."</label><br>";
        }
    }else{
        echo "<label>Нет ожидающих бронирований</label><br>";
    }

При var_dump переменной $pending_reservations возвращается array(0) { } в WordPress

3
Комментарии

А что насчёт этого? "SELECT booking_calendars.cal_name FROM {$wpdb->booking_calendars} AS booking_calendars INNER JOIN {$wpdb->booking_reservation} AS booking_reservations ON booking_calendars.id = booking_reservations.calendar_id WHERE status LIKE 'pending'"

Mayeenul Islam Mayeenul Islam
17 сент. 2015 г. 21:00:37

Пробовали ли вы вывести свой запрос через echo, чтобы увидеть, что генерируется? Я предполагаю, что он пытается запросить таблицу wp_booking_calendars, так как вы добавляете $wpdb->prefix

czerspalace czerspalace
17 сент. 2015 г. 21:11:12

@czerspalace хорошее замечание :)

Mina Ragaie Mina Ragaie
17 сент. 2015 г. 21:16:56
Все ответы на вопрос 1
0

спасибо за ваше время и спасибо @czerspalace Я начал запрос с двойных кавычек, затем разделил его одинарными, и после просмотра вывода echo обнаружил, что нет пробелов между From и названием таблицы

вот правильный способ

$pending_reservations = $wpdb->get_results(' 
    SELECT booking_calendars.cal_name
    FROM '.$wpdb->prefix.'booking_calendars AS booking_calendars
    INNER JOIN '. $wpdb->prefix.'booking_reservation AS booking_reservations
    ON booking_calendars.id =  booking_reservations.calendar_id
    WHERE status LIKE "pending"');
17 сент. 2015 г. 22:05:06