web-dev-qa-db-ja.com

クラス内のクエリ

私はプラグインを作成していますし、私はwordpressにはかなり新しい私はデータベースクエリを実行する必要がありますいくつかのメソッドを持っているクラスを持っています。クラスは次のようになります

class MyClass{

        private $wpdb;

        function __construct(){
            global $wpdb;

        }

        function query(){
        $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->wp_competitors

                        ( id, field_key, field_value ) VALUES ( %d, %s, %s )",1,

                        $field_key, $field_value) );

        }

     }

私のクラスのwordpressネイティブデータベースクラスの内部で使用できるようにしたいのですが、どうすればよいですか?

3
fefe
class MyClass{
    function __construct(){
        global $wpdb;
        $this->db = $wpdb;
    }

    function query(){
       return $this->db->query( 
            $this->db->prepare("INSERT INTO {$this->db->wp_competitors} (id, ield_key, field_value) VALUES ( %d, %s, %s )",
            1, $field_key, $field_value) 
       );
    }
}
3
Butuzov

自分のクラスでカスタムの$dbプロパティを使用することの不利な点は、これを作成したとしても、静的メソッドでは使用できないことです。 2つの代替アプローチ

class MyClass {

    public function query1() {
        global $wpdb;
        $wpdb->query('SQL');
    }

    public function query2() {
        $GLOBALS['wpdb']->query('SQL');
    }

}
2
Geert