Есть ли где-нибудь адаптер для модели cakephp 3.x для обработки синтаксис 2.x? Мол, внутренне он просто преобразует синтаксис следующим образом:

array(
    'conditions' => array('Model.field' => $thisValue),
    'fields' => array('Model.field1', 'DISTINCT Model.field2'),
    'order' => array('Model.created', 'Model.field3 DESC'),
    'group' => array('Model.field'), 
    'limit' => n
)

В:

$query->select('Model.field1')
->distinct('Model.field2')
->order->(['Model.created', 'Model.field3' => 'DESC'])
->group('Model.field')
->where('Model.field' => $thisValue)

И вернуть выполненный запрос -> toArray (). Таким образом, модель 2.x становится совместимой с 3.x.

Большое спасибо любым советам.

0
Alex 26 Ноя 2016 в 11:48

2 ответа

Лучший ответ

В торте 3 вы не ограничены построителем запросов, вы также можете передать массив в find() (аналогично тому, как это работало в 2.x):

$query = $articles->find('all', [
    'conditions' => ['Articles.created >' => new DateTime('-10 days')],
    'contain' => ['Authors', 'Comments'],
    'limit' => 10
]);

Вы можете прочитать об этом здесь

2
Xymanek 1 Дек 2016 в 13:13

Если кто-то другой столкнулся с такой же проблемой: плагин shim может решить большинство проблем с совместимость версий 2.x и 3.x.

0
Alex 30 Ноя 2016 в 13:29