6

我在 WP 中添加了自定义插件(由我创建),在该插件中我有名为 BaseModel 的类,它扩展了 wpdb。

这里的问题是每次我尝试运行查询时,我都会得到 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(){
}}

有人可以告诉我出了什么问题吗?

谢谢。

4

3 回答 3

5

实际上它不是一个完整的 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(){
}}

我希望你会发现这很有帮助。

于 2012-12-17T11:39:17.260 回答
2

更多信息 WordPress 使用 wpdb 进行测试

<?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();
    }
}
于 2014-03-14T04:38:29.673 回答
1

我不认为你想从它延伸?如果此类将始终加载到 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);
    }
}    
于 2016-09-23T21:00:45.340 回答