1

Kohanaフレームワークを使い始めたばかりで、いくつかのクエリを実行しようとしていますが、ドキュメントに数時間費やし、いくつかのテストを実行した後、私が持っているのはこれだけです:

class Controller_Test extends Controller {
    public function action_index()
    {
       $query = DB::select()->from('test')->where('test', '=', '1');
       echo $query  
    }
}

今、これを実行しようとすると、SQL をエコーするだけです。

データベースから実際のデータを取得するにはどうすればよいですか? 私は次のようなことができることを知っています:

$row = mysql_fetch_row(mysql_query($query));
echo $row[0];

そしてそれはうまくいくでしょう。しかし、私はフレームワークを使用していて、これには組み込みのメソッドが必要なので、それはまったくばかげていると思います。

4

3 に答える 3

5

実際に Database_Query オブジェクトを作成しているので、最後にそれを実行する何かが必要であることに注意してください。

$results = DB::select('*')->from('table')->execute();

そして、通常はこれらをループできます:

foreach ($results as $result) { echo $result->id; }

于 2011-11-09T23:27:33.100 に答える
2

クエリを作成したら、メソッドを使用してクエリをDatabase_Queryオブジェクトに変換し、execute()実行する値を取得できるようにする必要があります。

クエリの結果を配列として扱いたい場合は、次as_array()のように実行後にメソッドを追加できます。

$query = DB::select()->from('test')->where('test', '=', '1')
                     ->execute()->as_array();

単一の行のみを扱っていて、単一の行のみが必要であることがわかっている場合は、それを次のように変更できますcurrent()

$query = DB::select()->from('test')->where('test', '=', '1')
                     ->execute()->current();

次に、配列をループするときに必要に応じて抽出できます。

foreach ($query as $row)
{
    echo $row['title'];
}
于 2011-11-10T18:53:31.897 に答える
0

行を取得するには:

$query = DB::select('p.id')
            ->select_array(array('p.title', array('p.title', 'pocket') ))
            ->from(array($this->_table_name, 'p'))
            ->limit(1);

echo $query->execute()->get('id');

クエリを表示するには:

echo $query->compile();
于 2014-01-24T12:10:21.687 に答える