Intereting Posts

Как заставить Propel сохранить ассоциативный формат с помощью особых выборок?

У меня есть следующие критерии в Propel:

$q = \UserQuery::create(); $q->select(array('id', 'name')); $q->orderBy('name'); $q->setOffset($offset); $q->setLimit($limit); return $q->find(); 

Это прекрасно работает и дает мне двумерный массив с идентификаторами и именами во внутреннем массиве, т. Е.

 array( array("id" => 1, "name" => 'A'), array("id" => 2, "name" => 'B') ) 

Однако, если я запустил следующее:

 $q = \UserQuery::create(); $q->select(array('id')); $q->orderBy('id'); $q->setOffset($offset); $q->setLimit($limit); return $q->find(); 

Это дает мне одномерный массив без ключей столбца, только индексы, т. Е.

 array(1, 2) 

Если я использую PropelArrayFormatter:

 $q = \UserQuery::create(); $q->select(array('id')); $q->orderBy('id'); $q->setOffset($offset); $q->setLimit($limit); $q->setFormatter('PropelArrayFormatter'); return $q->find(); 

Он убирает весь объект с нулевыми значениями:

 array( array("id" => 1, "name" => null, "hash" => null, "last_login" => null), array("id" => 2, "name" => null, "hash" => null, "last_login" => null) ) 

Если я добавлю:

 $q->setFormatter('PropelArrayFormatter'); 

Затем я получаю:

 PHP Notice: Undefined offset: 2 in BaseUser.php on line 1518 PHP Notice: Undefined offset: 3 in BaseUser.php on line 1519 PHP Notice: Undefined offset: 4 in BaseUser.php on line 1520 PHP Notice: Undefined offset: 5 in BaseUser.php on line 1521 PHP Notice: Undefined offset: 6 in BaseUser.php on line 1522 PHP Notice: Undefined offset: 7 in BaseUser.php on line 1523 PHP Notice: Undefined offset: 8 in BaseUser.php on line 1524 PHP Notice: Undefined offset: 9 in BaseUser.php on line 1525 PHP Notice: Undefined offset: 10 in BaseUser.php on line 1526 PHP Notice: Undefined offset: 11 in BaseUser.php on line 1527 PHP Notice: Undefined offset: 12 in BaseUser.php on line 1528 PHP Notice: Undefined offset: 13 in BaseUser.php on line 1529 PHP Notice: Undefined offset: 14 in BaseUser.php on line 1530 PHP Notice: Undefined offset: 15 in BaseUser.php on line 1531 PHP Notice: Undefined offset: 16 in BaseUser.php on line 1532 PHP Notice: Undefined offset: 17 in BaseUser.php on line 1533 PHP Notice: Undefined offset: 18 in BaseUser.php on line 1534 PHP Notice: Undefined offset: 19 in BaseUser.php on line 1535 PHP Notice: Undefined offset: 20 in BaseUser.php on line 1536 

И ничего не возвращается. Я также пробовал PropelSimpleArrayFormatter, и он никогда не возвращает ассоциативный массив:

 $q->setFormatter('PropelSimpleArrayFormatter'); 

Результат:

 PropelArrayCollection::__set_state(array( 0 => '123', 1 => '126', 2 => '133', 3 => '242', 4 => '256', 5 => '272', 6 => '283', 7 => '284', 8 => '474', 9 => '617', ))