Получение среднего значения столбца базы данных из совпадающих записей в CakePHP 2.9 - PullRequest
0 голосов
/ 28 августа 2018

Есть ли способ (помимо полностью настраиваемого SQL) найти среднее значение столбца таблицы из записей, соответствующих определенным условиям в CakePHP 2.9?

Например, я могу легко найти список полей, вызвав модель поля:

$fields = $this->Field->find('all', array(
    'conditions' => array(
        'User.username' => 'John Doe',
        'Report.created' => '2018-01-01'
    )
);

Тем не менее, я действительно хочу получить среднее Field.value для всех соответствующих записей.

Что я обычно могу сделать, это выполнить необработанный SQL-запрос;

$average = $this->Field->query('
    select avg(f.value) as average from fields f 
      left join users u on (f.user_id = u.id) 
      left join reports r on (f.report_id = r.id) 
      where u.username = "John Doe" and r.created = "2018-01-01"
');

Однако я не обязательно знаю, каковы поля условия, и я хотел бы использовать мощь CakePHP ORM для построения запроса.

Есть ли способ рассчитать это среднее из Model::find?

1 Ответ

0 голосов
/ 29 августа 2018

Предполагая, что вы следовали соглашениям Cakephp. Вы можете сделать Среднее для поля, как показано ниже.

$average = $this->Field->find('all', array(
'fields' => array('AVG(Field.value) as average'),
'conditions' => array('User.username' => 'John Doe', 'Report.created' => '2018-01-01'),
'contain' => array('User', 'Report')
));

Надеюсь, вы поймете идею.

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