0

データベース City と State に 2 つのテーブルがあります。City テーブルには外部キー state_id があります。

データベースは次のようになります。

City
-----
id    city_name        state_id
--    ---------        -------- 
1     Jersey City      1
2     Philadelphia     2

State
-----
id    state_name    
--    ----------
1     New Jersey
2     Pennsylvania

これは私の都市モデルがどのように見えるかです:

class City_Model extends MY_Model {
    public $_table = 'city';

    public $belongs_to = array( 'state' );

    public _order_by_state() {
        $this->db->order_by('state_name', 'desc');
        return $this;
    }
}

Jamie Rumbelow の My_Model クラスを使用して、すべての都市とそれらが属する州を州名順にフェッチしようとしています。したがって、Controller クラスの次のコードを使用してこれを達成しようとしています。

$data['cities'] = $this->city_model->_order_by_state()->with('state')->get_all();

上記のコードでは、次のエラーが発生します。

Fatal error: Call to a member function result() on a non-object in C:\xampp\htdocs\start\application\core\MY_Model.php on line 200

これは My_Model.php の get_all メソッドです。

public function get_all()
{
    $this->trigger('before_get');

    if ($this->soft_delete && $this->_temporary_with_deleted !== TRUE)
    {
        $this->_database->where($this->soft_delete_key, (bool)$this->_temporary_only_deleted);
    }

    $result = $this->_database->get($this->_table)
                       ->{$this->_return_type(1)}(); //Line 200 <- Error Here
    $this->_temporary_return_type = $this->return_type;

    foreach ($result as $key => &$row)
    {
        $row = $this->trigger('after_get', $row, ($key == count($result) - 1));
    }

    $this->_with = array();
    return $result;
}

ここで order_by 句を使用する正しい方法を教えていただければ幸いです。

ありがとう!

4

2 に答える 2

0
/*  
- Controller  
- There'll be a table called states and i just want to select id (that comes auto) and the state_name, that's why i'm using dropdown()  
*/  

$st = $this->state_model->order_by('state_name')->dropdown('state_name');  
var_dump($st);
于 2015-03-23T00:03:44.763 に答える