我想知道如何创建一个“存储库”文件(对于symfony2用户),我将把所有特殊行为查询。
我有一个简单的数据库shema:
我想在用户Y上检索关系为X的用户,所以在sql中它看起来像:
var sql = 'SELECT u.email, u.id
FROM user u
INNER JOIN UserXUser uxu ON uxu.toUser_id = u.id
WHERE uxu.relation_id = 1 AND uxu.fromUser_id = '+id
我应该在哪里创建此方法?我在db / shema.js和app / models / user.js中尝试过但没有成功。 我在这里Using arbitrary mySQL Query with JugglingDB?发现我应该使用shema对象来使用“查询”,我在哪里以及如何使用它?
回调是否如下所示:
function(err, data) {...}
在这种情况下,是否有一些关于代码分离的最佳实践?
其他问题:有没有办法将参数与PHP PDO方式绑定到jugglingdb?
谢谢大家。
答案 0 :(得分:1)
可以使用jugglingdb和compoundjs执行任意查询。如果您使用的是复合j,则可以使用compound.models.user.schema.adapter.query()
。复合对象应该解析为您的用户模型,这意味着您可以访问许多其他方法。在模型中使用此查询的方法是使用以下代码在用户模型中创建方法:
var sql = 'SELECT u.email, u.id
FROM user u
INNER JOIN UserXUser uxu ON uxu.toUser_id = u.id
WHERE uxu.relation_id = 1 AND uxu.fromUser_id = '+id
compound.models.user.schema.adapter.query(sql, function(err, data) {
if(error) {
console.log(error)
} else {
//Enjoy your data
}
})
由于这会覆盖jugglingdb引用escaper,请注意sql注入,确保检查并清理了您的id变量。