cakephp3自己的查询生成器

时间:2018-11-24 09:00:11

标签: mysql cakephp-3.0

我是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']);
    }

这是一个简单的查询,很容易理解,但是如果我有一个带有很多join等的更复杂的查询,是否有可能用sql sintax编写自己的查询,您能否帮助我将此代码翻译为用sql编写的查询?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用const bytes = crypto.AES.decrypt(encryptedPassword, 'password'); const decryptedPassword = bytes.toString(crypto.enc.Utf8); https://book.cakephp.org/3.0/en/orm/database-basics.html#running-select-statements)直接编写执行SQL查询,但我建议您坚持使用Cakephp的ORM。

如果您想知道上面发布的查询如何转换为SQL,我建议使用DebugKit。如果您在应用程序配置中具有debug = true,则在浏览器中打开应用程序时,您将在底部右下角看到这个红色矩形。单击它,然后单击“ SQL查询”:您将在上面的某处从查询中找到生成的SQL。或者,您可以使用查询日志记录(请参见此处:https://book.cakephp.org/3.0/en/orm/database-basics.html#database-query-logging