如何从蛋糕查询数组中获取正常的SQL查询?

时间:2012-08-25 04:28:02

标签: php mysql sql cakephp

我有这样的数组

$conditions = array("Post.title" => "This is a post");

在此方法中使用 $ conditions 数组。

$this->Post->find('first', array('conditions' => $conditions));

我想将$ conditions数组转换为普通的sql查询。      我想用

$this->Post->query($converted_query);

而不是

$this->Post->find('first', array('conditions' => $conditions));

2 个答案:

答案 0 :(得分:1)

 $null=null;
 echo  $this->getDataSource()->generateAssociationQuery($this, NULL, NULL, NULL, NULL, $query_array, false,$null);

答案 1 :(得分:0)

要做你想做的事,你可以做两件事:

1)合并您的$conditions数组,让CakePHP构建您的新查询,这样您就可以再次使用$this->Model->find()

2)使用this。它是mysql数据源的扩展,它添加了执行$this->Model->find('sql', array('conditions' => $conditions))的选项,它将返回SQL查询。此选项可能会导致麻烦,因为对于某些查找调用(特别是在获取关联模型时),CakePHP使用多个查询来获取关联模型(特别是在hasMany关联的情况下)。

如果可能的话,选项1可能会造成最小的麻烦。使用2的另一个问题是,如果您尝试将两个具有冲突条件的查询组合在一起(例如查询1中的'name = Hansel'和查询2中的'name = Gretel'),除非您计划编写,否则您将找不到任何内容额外的代码来解析生成的查询并查找冲突.. 使用1可能会更简单,并且可能会避免很多问题。