2010-09-02 3 views
0

У меня есть запрос, используя Containable поведение в CakePHP, который выглядит следующим образом:CakePHP, получая всего много строк в Containable

$x = $this->find('first',array('contain'=>array(
    'User' => array(
     'SelectionsTeam' => array('conditions' => $conditionTeamSelection, 
      'Team' => array(
         'fields' => array('name','city','id'), 
          'TeamsStat' => $condition, 
              ), 
      'PointsHistory' => array('fields' => array('points')) 
            ), 

    ), 
    'conditions' => array('id'=>$id) 
)); 

Everythings работать хорошо, но таблица PointsHistory вернуть меня, к примеру 10 строк с 1 поле (точки). Как я могу сделать, чтобы получить SUM каждого из томов 10 строк точек непосредственно в сдерживаемом. Потому что теперь мне нужно сделать foreach и составить сумму каждой строки PointsHistory, что, я думаю, можно избежать.

В финале я хотел бы иметь таблицу выглядит следующим образом: [PointsHistory] => [Total] => 10

вместо:

[PointsHistory] => 
      [0] => 
        ['points'] 
          => 2 
      [1] => 
        ['points'] 
          => 1 
      [2] => 
        ['points'] 
          => 3 

т.д.

ответ

2

Я не думаю, что это возможно, чтобы получить именно

[PointsHistory] => [Total] => 10 

, но я считаю, что вы ищете:

$x = $this->find('first',array('contain'=>array(
    'User' => array(
     'SelectionsTeam' => array('conditions' => $conditionTeamSelection, 
      'Team' => array(
         'fields' => array('name','city','id'), 
          'TeamsStat' => $condition, 
              ), 
      'PointsHistory' => array('fields' => array('SUM(points) total_points')) 
            ), 

    ), 
    'conditions' => array('id'=>$id) 
)); 

Результат будет что-то вроде:

[PointsHistory] => [0] => [Total] => 10 

Я не проверял, поэтому изменить уровень отладки 2 и посмотреть, какой код он генерирует :)

+0

Знал, что было что-то простое , Спасибо. Работы A1 –

Смежные вопросы