我是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编写的查询吗?
谢谢
1条答案
按热度按时间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-查询日志记录)