Запрос к базе данных в 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();