0

次のコードがありますが、CodeIgniter が生成するクエリに追加のワイルドカードを追加する理由がわかりません。

コード

class Foo_Model extends CI_Model {
  private $table = 'foo';

  public function get_all_foos() {
    $table = $this->table;   
    $this->db->select("$table.*")->from($table);
    return $this->get()->result();
  }
}

そして、次のエラーが表示されます。

データベース エラーが発生しました

エラー番号: 1064

SQL 構文にエラーがあります。foo1 行目の '* FROM ( , foo)'付近で使用する正しい構文については、MySQL >server バージョンに対応するマニュアルを確認してください。

SELECT foo.*, * FROM ( foo, foo)

クエリが正しく生成されないのはなぜですか?

4

3 に答える 3

2

すべてを選択したい場合は、->select()ステートメントを使用しないでください。これは、期待したものと同等である必要があります。

class Foo_Model extends CI_Model {
  private $table = 'foo';

  public function get_all_foos() {
    $table = $this->table;   
    $this->db->from($table);
    return $this->get()->result();
  }
}

$this->db->get例については、ドキュメントを参照してください - http://codeigniter.com/user_guide/database/active_record.html

于 2012-08-10T18:26:25.120 に答える
0

これは Codeigniter 2.1.2 のバグだと思います

これはあなたのために働くはずです:

$this->db->select("`$table`.*",false)->from($table);
于 2012-08-10T23:00:01.417 に答える
0

すべてを選択したい場合はget()、テーブル名を直接使用するのが最速の方法です。
例えば:

class Foo_Model extends CI_Model {
  private $table = 'foo';

  public function get_all_foos() {
   $table = $this->table;
   return $this->db->get($table)->result();
  }
}
于 2012-08-10T23:17:54.453 に答える