CakePHP привязка запроса - PullRequest
       1

CakePHP привязка запроса

0 голосов
/ 01 октября 2018

Я хочу создать SQL-оператор с помощью cakePHP 3.6.10:

SELECT id FROM table_xy WHERE (status != 1 OR name IS NULL) AND id IN(1,2,3);

Теперь, копируя изощренные примеры в кулинарной книге Я получил это:

$userIds = [2,212,232];
$table = TableRegistry::getTableLocator()->get('TableXY');
$query = $table->find()
    ->select(['id'])
    ->where(function(QueryExpression $exp) {
        $orConditions = $exp->or_(function($or) {
            return $or->isNull('name')
                ->notEq('status', 1);
         });
         return $exp
            ->add($orConditions)
            ->in('id', ':id');
        })
        ->bind(':id', $userIds, 'int[]');
$results = $query->all();

Это приводит к ошибке «неизвестный тип int []».Но это точно так же, как описано в документации

$query->bind(':id', [1, 2, 3], 'int[]');

Есть идеи?

1 Ответ

0 голосов
/ 01 октября 2018

Вместо такого сложного примера вы можете попробовать вот так:

// an array is not automatically converted
$result =  $this->table_xy->find('all')->where(['id IN' => $userIds, 
     'OR' => [
                   'status !=' => 1,
                   'name is NULL'
             ]
    ])->select(['id']);

CAKEPHP> Построитель запросов> Расширенные условия

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