CakePHP массив запросов - PullRequest
       3

CakePHP массив запросов

0 голосов
/ 26 ноября 2011

Я выполняю этот запрос, используя CakePHP:

$total = $this->Lapse->query("select sum(unix_timestamp(stop) - unix_timestamp(start)) from lapses where id = ".$lastId."");

И я получаю эту структуру массива:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [sum(unix_timestamp(stop) - unix_timestamp(start))] => 1
                )

        )

)

Итак, моя переменная содержит это: $updateVal = $total[0][0][0];

Что не самое красивое, есть ли способ упростить этот массив OTT?

1 Ответ

3 голосов
/ 26 ноября 2011

Вы пробовали метод find(), передавая пользовательскую опцию fields?

$this->Lapse->find('all', array(
  'fields' => array('sum(unix_timestamp(stop) - unix_timestamp(start)) as elapsed_time'),
  'conditions' => array('Lapse.id' => $lastId),
));

Возвращенный массив красивее, чем тот, который вы получаете, хотя он не красивее, чем elapsed_time, являющийся фактическим свойством модели.

Другим решением было бы установить elapsed_time как виртуальное поле внутри модели:

class Lapse extends AppModel {
  ...

  public $virtualFields = array(
    'elapsed_time' => 'sum(unix_timestamp(Lapse.stop) - unix_timestamp(Lapse.start)',
  );

  ...
}

Тогда elapsed_time действует как свойство модели и будет возвращаться как $updateVal['Lapse']['elapsed_time'] при каждом вызове find().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...