mysql - cakephp3 自己的查询生成器
问题描述
我是 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 sintax 编写自己的查询,你能帮我把这段代码翻译成一个写的查询吗在 sql?
谢谢
解决方案
$connection->execute()
您可以使用(https://book.cakephp.org/3.0/en/orm/database-basics.html#running-select-statements )直接编写执行 SQL 查询,但我建议坚持使用 cakephp 的 ORM。
如果您想知道上面发布的查询如何转换为 SQL,我建议您使用 DebugKit。如果您在应用程序配置中设置了 debug = true,当您在浏览器中打开应用程序时,您将在右下角看到这个红色矩形。点击它并点击“Sql queries”:你会在上面的某个地方找到从上面的查询生成的SQL。或者,您可以使用查询日志记录(请参见此处:https ://book.cakephp.org/3.0/en/orm/database-basics.html#database-query-logging )
推荐阅读
- kubernetes - 如何巧妙地为 Helm 模板中的值列表定义 if 条件操作?
- c# - 如何将支付处理器的使用与 firebase 或 Auth0 登录结合使用?
- azure-devops - Azure DevOps query matching unassigned tasks?
- c++ - Qt's slot(?) inserts redundant namespace into connect
- cytoscape.js - 屏幕布局上的固定位置?
- java - How do I deserialize a series of application.properties to a Map in Java
- c# - How to convert this Oracle query to Linq?
- java - how can i extract ip from String in java
- java - Calling method after Optional.filter() without passing in object
- asp.net-core - 从配置文件配置 JwtBearerOptions