cakephp3 собственный конструктор запросов - PullRequest
0 голосов
/ 24 ноября 2018

Я новичок в CakePHP, и я следую указаниям, я пришел с других языков и не обычно для меня читать запрос так:

   public function findTagged(Query $query, array $options)
    {
        $columns = [
            'Articles.id', 'Articles.user_id', 'Articles.title',
            'Articles.body', 'Articles.published', 'Articles.created',
            'Articles.slug',
        ];

        $query = $query
            ->select($columns)
            ->distinct($columns);

        if (empty($options['tags'])) {
            // If there are no tags provided, find articles that have no tags.
            $query->leftJoinWith('Tags')
                ->where(['Tags.title IS' => null]);
        } else {
            // Find articles that have one or more of the provided tags.
            $query->innerJoinWith('Tags')
                ->where(['Tags.title IN' => $options['tags']]);
        }

        return $query->group(['Articles.id']);
    }

Это простой запрос иэто легко понять, но если у меня есть более сложный запрос с большим количеством соединений и т. д., есть ли возможность написать свой собственный запрос с использованием синтаксиса SQL, можете ли вы помочь мне перевести этот код в запрос, написанный на SQL?

Спасибо

1 Ответ

0 голосов
/ 24 ноября 2018

Вы можете написать напрямую выполнить SQL-запрос с помощью $connection->execute() (https://book.cakephp.org/3.0/en/orm/database-basics.html#running-select-statements), но я бы порекомендовал придерживаться ORM для CakePHP.

Если вы хотите знать, как запрос, который вы разместили вышепереводит в SQL, я бы порекомендовал использовать DebugKit. Если у вас в конфигурации приложения есть debug = true, вы увидите этот красный прямоугольник в правом нижнем углу, когда откроете свое приложение в браузере. Нажмите на него и нажмите на«Sql запросы»: вы найдете сгенерированный SQL из запроса выше где-то там. В качестве альтернативы вы можете использовать ведение журнала запросов (см. Здесь: https://book.cakephp.org/3.0/en/orm/database-basics.html#database-query-logging)

...