5

これを表現する最良の方法がわからないので、我慢してください。

Codeigniter内では、オブジェクトのレコードセットを問題なく返すことができますが、これは「モデル」オブジェクト(たとえば、ページオブジェクト)としてではなくstdClassオブジェクトとして返され、そのモデル内の他のメソッドを利用するために使用できます。

私はここでトリックを逃していますか?それとも、これはCI内の標準機能ですか?

4

3 に答える 3

8

はい、基本的にこれを機能させるには、モデルオブジェクトのプロパティをクラス全体で宣言し$this、現在のモデルオブジェクトであることを参照する必要があります。

class Blogmodel extends CI_Model {

    var $title   = '';
    var $content = '';   // Declare Class wide Model properties
    var $date    = '';

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }

    function get_entry()
    {
        $query = $this->db->query('query to get single object');
        $db_row = $query->row();            //Get single record

        $this->title   = $db_row->title;
        $this->content = $db_row->content;  //Populate current instance of the Model
        $this->date    = $db_row->date;

        return $this;                       //Return the Model instance
    }
}

get_entry()オブジェクトタイプが返されると思いますBlogmodel

于 2011-03-03T16:57:24.150 に答える
0

次のようなsthは必要ありません。

$this->title   = $db_row->title;
        $this->content = $db_row->content;  //Populate current instance of the Model
        $this->date    = $db_row->date;

result()メソッドurモデルに入れるだけです:

result(get_class($this));

また

result(get_called_class());

そして、あなたはurモデルのインスタンスを取得します!

于 2013-07-18T13:38:34.757 に答える
0

この問題に対する私の解決策は、jondavidjohnの回答とmkoistinenのコメントの組み合わせで構成されていました。

CodeIgniterのドキュメントによると:

結果オブジェクトごとにインスタンス化するクラスを表す文字列をresult()に渡すこともできます(注:このクラスをロードする必要があります)

その知識を身につければ、jondavidjohnのソリューションを次のように書き直すことができます。

class Blogmodel extends CI_Model {

    var $title   = '';
    var $content = '';   // Declare Class wide Model properties
    var $date    = '';

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }

    function get_entry()
    {
        $query = $this->db->query('query to get single object');
        $blogModel = $query->row('Blogmodel'); //Get single record

        return $blogModel; //Return the Model instance
    }
}
于 2015-11-04T16:40:07.600 に答える