我是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编写的查询?
谢谢
答案 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)