Преобразование SQL-запроса в CakePHP - PullRequest
0 голосов
/ 21 октября 2018

У меня есть SQL-запрос, который мне нужно преобразовать в CakePHP.Я использовал этот сайт [http://dogmatic69.com/sql-to-cakephp-find-converter][1], который конвертирует код, но я не работаю так, как я хочу.Результатов нет.

Я думаю, это потому, что он создает пустой массив, вот код SQL:

SELECT shops.phone1 FROM galleries , albums , shops
WHERE  galleries.album_id = albums.id and albums.shop_id = shops.id and galleries.id = 210

, и вот результат, который дает мне веб-сайт:

$options = array(
    'fields' => array(
        'shops.phone1',
    ),
    'joins' => array(

        array(
        ),
    ),
    'conditions' => array(
        'Gallery.album_id = albums.id',
        'albums.shop_id = shops.id',
        'Gallery.id' => '210',
    ),
);
$data = $this->find('all', $options);

но код не работает.

Есть идеи, что может быть не так?

Спасибо

1 Ответ

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

Есть много способов достичь этого.Если вы правильно определили свои ассоциации, то вы можете сделать это:

$data = $this->Shops->find('all')
             ->contain(['Galleries','Albums'])
             ->fields(['Shops.phone1'])
             ->where(['Galleries.id' => 210]);

В противном случае вы можете использовать пользовательское объединение для создания запроса:

$data = $this->Shops->find('all') 
                     ->join([
                           'albums' => [
                                 'table' => 'albums',
                                 'type' => 'INNER', // define your join type here
                                 'conditions' => 'albums.shop_id = Shops.id',
                                  ],
                           'galleries' => [
                                  'table' => 'galleries',
                                  'type' => 'INNER', // define your join type here
                                  'conditions' => 'galleries.album_id=albums.id',
                             ]
                     ])
                   ->select(['Shops.phone1'])
                   ->where(['galleries.id' => 210]);

Дальнейшее чтение: Cakephp -> Query Builder -> Добавление объединений

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