cakephp3自己的查询生成器

j13ufse2  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(405)

我是cakephp的新手,我遵循的是toutorial,我来自其他语言,不常阅读这样的查询:

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

这是一个简单的查询,很容易理解,但是如果我有一个更复杂的查询,有很多连接等,有没有可能用sqlsintax编写自己的查询,你能帮我把这个代码翻译成sql编写的查询吗?
谢谢

hjzp0vay

hjzp0vay1#

您可以使用直接编写和执行sql查询 $connection->execute() (https://book.cakephp.org/3.0/en/orm/database-basics.html#running-select语句),但我建议继续使用cakephp的orm。
如果您想知道上面发布的查询是如何转换为sql的,我建议您使用debugkit。如果你的应用程序配置中有debug=true,当你在浏览器中打开你的应用程序时,你会在右下角看到这个红色矩形。单击它并单击“sql查询”:您将在其中的某个地方找到从上面的查询生成的sql。或者,您可以使用查询日志记录(请参见此处:https://book.cakephp.org/3.0/en/orm/database-basics.html#database-查询日志记录)

相关问题