programing

다른 클래스에서 wpdb 확장 - 선택에 get_results를 사용하면 null이 됩니다.

css3 2023. 10. 2. 15:19

다른 클래스에서 wpdb 확장 - 선택에 get_results를 사용하면 null이 됩니다.

WP에 사용자 지정 플러그인(제가 만든)을 추가했습니다. 이 플러그인에는 wpdb를 확장하는 BaseModel이라는 클래스가 있습니다.

여기서 문제는 쿼리를 실행하려고 할 때마다 false, null, 또는 빈 배열이 발생한다는 것입니다.

class BaseModel extends wpdb{

public function __construct(){
    parent::__construct(DB_HOST, DB_USER, DB_PASS, DB_NAME);
}

function get_destinations($limit, $order){
    $query = "SELECT * FROM wp_relations";

    $result = $this->get_results($query, ARRAY_A);
    var_dump($result); 
}

function get_total_destinations(){
}}

누가 뭐가 잘못되었는지 말해 줄 수 있습니까?

감사해요.

사실 완전한 OOP 솔루션은 아니지만, 글로벌 $wpdb를 내 기능에 추가하여 해결합니다.

class BaseModel {


function get_destinations($limit, $order){
    global $wpdb;
    $query = "SELECT * FROM wp_relations";

    $result = $wpdb->get_results($query, ARRAY_A);
    var_dump($result); 
}

function get_total_destinations(){
}}

이것이 도움이 되기를 바랍니다.

wpdb를 사용한 추가 정보 WordPress 테스트

<?php
class testWPDB extends wpdb {
function prepare( $query, $arguments ){
        return vsprintf( $query, $arguments );
    }
}

class UTCW_Test_Data extends WP_UnitTestCase {
protected $utcw;
function setUp(){
    $this->utcw = UTCW_Plugin::get_instance();
}

function getWPDBMock(){
    return $this->getMock( 'testWPDB', array( 'get_results' ), array(), '', false );
}

function test_author(){
    $instance[ 'authors' ] = array( 1, 2, 3 );
    $config = new UTCW_Config( $instance, $this->utcw );
    $db = $this->getWPDBMock( 'get_results' );

    $db->expects( $this->once() )
    ->method( 'get_results' )
    ->with( $this->stringContains( 'post_author IN (1,2,3)' ) );

    $data = new UTCW_Data( $config, $db );
    $data->get_terms();
    }
}

연장하고 싶지 않으신 것 같은데요?이 클래스가 항상 Wordpress 파일 내에 로드되는 경우 글로벌 $wpdb에 액세스할 수 있습니다.

class RandomClass {

    private $wpdb = false;

    public function __construct() {
        global $wpdb;

        if (is_object($wpdb)) {
            $this->wpdb = $wpdb;
        }
    }

    public function get_results($data) {
         return $this->wpdb->get_results($data);
    }
}    

언급URL : https://stackoverflow.com/questions/13906867/extend-wpdb-in-other-class-when-use-get-results-for-select-gives-me-null