Kohana 3.1 ORM - Условные параметры - PullRequest
1 голос
/ 20 марта 2012

Я пытаюсь достичь очень простой цели, но, похоже, она не работает.Я хочу использовать ORM Коханы и условно добавить определенные параметры.

Например:

$query = ORM::factory('user')
  ->where('foo', '=', 'bar');

if (isset($some_var))
  $query->where('field', '=', $some_var);

$query->find_all();

Казалось бы, это должно сработать, но все, что я получаю от $query, - это большой жирный ничего.Любые предложения я буду очень признателен!Спасибо.

РЕДАКТИРОВАТЬ:

Простой пример на этой странице Kohana даже показывает аналогичный запрос: http://kohanaframework.org/3.1/guide/orm/examples/simple

... Но даже когда я создаю экземпляр пользовательской моделиа затем попробуйте find_all() в отдельном утверждении, я ничего не получаю.

Это работает:

$query = ORM::factory('user')->find_all();

Это не работает:

$query = ORM::factory('user');
$query->find_all();

Возможная ошибка ??

Ответы [ 2 ]

4 голосов
/ 20 марта 2012

В вашем примере, который работает, вы присваиваете значение, возвращаемое функцией find_all () для $ query.Хотя в примере, который не работает, вы вообще не присваиваете значение, возвращаемое функцией find_all ().

каркас kohana

$query = ORM::factory('user');
$result = $query->find_all(); 
// you may now loop over $result

Когда вы просматриваетеAPI, вы увидите, что find () и find_all () работают по-разному.

0 голосов
/ 20 марта 2012

Ваш код в порядке, так как метод ORM::where возвращает объект ORM, поэтому нет проблем с цепочкой метода.Вы должны искать ошибки в другом месте (возможно, ваш $some_var установлен, но может быть пустым, поэтому ваше состояние может выглядеть иначе, чем ожидалось).Я бы попробовал с этим небольшим изменением:

if (!empty($some_var))
  $query->where('field', '=', $some_var);
...