1

我有这样的数组

$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));
4

2 回答 2

1
 $null=null;
 echo  $this->getDataSource()->generateAssociationQuery($this, NULL, NULL, NULL, NULL, $query_array, false,$null);
于 2012-08-27T08:47:38.977 回答
0

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

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

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

如果可能的话,选项 1 可能会造成最少的麻烦。使用 2 的另一个问题是,如果您尝试组合两个条件冲突的查询(例如查询 1 中的“name = Hansel”和查询 2 中的“name = Gretel”),除非您打算编写,否则您将一无所获解析结果查询并查找冲突的额外代码。使用 1 可能会简单得多,并且可能会避免很多问题。

于 2012-08-25T08:29:55.763 回答