Запрос к базе данных в Kohana показывает только SQL, а не строки результата

Я только начал использовать инфраструктуру 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];

и это будет работать; но я думаю, это просто глупо, так как я использую фреймворк, и для этого должен быть встроенный метод.

3 ответа

Решение

После того, как вы создали запрос, вам нужно будет превратить его в 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'];
}

Вы должны знать, что вы на самом деле строите объект Database_Query, так что должно быть что-то, чтобы выполнить его в конце, верно?

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

и тогда вы можете нормально пройтись по этим:

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

Чтобы получить строку:

$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();
Другие вопросы по тегам