MYSQL 到 CakePHP

标签 mysql cakephp

我想将以下复杂的mysql转换为cake的find表达式:

SELECT p1, p2
FROM
  (
    SELECT IFNULL(a.c2, '10') AS p1, IFNULL((SELECT MAX(c.c1) FROM my_table c WHERE c.c1>p1), '30') AS p2
    FROM my_table a
    WHERE
    (
      (a.user_id = 2) AND (a.c1 BETWEEN '10' AND '30')
    )

  ) as temp
WHERE p2 > 100
ORDER BY p1;

我尝试遵循 http://dogmatic69.com/sql-to-cakephp-find-converter 但无法生成所需的表达式。

请帮忙。我真的不知道如何处理如此复杂的表达式(我不喜欢在cakephp中使用查询)

谢谢

最佳答案

让我将您的查询转换为 cakephp 方式 如果表a的模型是A:

$fields = "IFNULL(A.c2, '10') AS p1, IFNULL((SELECT MAX(C.c1) FROM my_table c WHERE C.c1>p1), '30')    AS p2";
$conditions = "A.user_id=2 AND A.c1 BETWEEN '10' AND '30'";
$inner_querry = $this->A->find("all", compact("fields", "conditions"));

$fields = "p1,p2";
$conditions = "p1 IN ($inner_querry) AND p2 IN($inner_query) AND p2 > 100";
$order = "p1";
$query = $this->A->find("all", compact("fields", "conditions", "order"));

debug($query); //check results of for error. 

关于MYSQL 到 CakePHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22927234/

相关文章:

php - 从表中插入记录到表中

node.js - 是否可以将 Nodejs 与 Cakephp 集成?

php - 如何计算两个日期时间之间的小时,分​​钟?

php - 在 CakePHP 3.0 中将附加数据保存到联合表

php - MySQL 插入问题 - 在本地计算机上有效,但在服务器上无效,无论权限如何

php - 多个复选框过滤器未正确过滤

sql - 对 1 :n (one-to-many) relationship 中的记录进行排序

java - 用按钮单击时的查询替换 jtable 中的先前行 - java swing

php - 当它是 hasMany 关联的一部分时,如何将 CakePHP 表单中的字段设为 'unlock'

php - CakePHP 检查用户是否在 View 中登录