php - Laravel 中的 SQL 语法有什么问题?

标签 php mysql laravel eloquent

此查询使用 $hotel_id 和两个日期变量从数据库获取一些数据。但我不断收到此错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax

这是另一个项目中使用的一个更大的查询,并且在那里完美地工作。但我的项目中存在一些我无法解决的问题。

$from_Date$to_Date 变量没问题。

这条 MySQL 语句有什么问题?

    $splitDate = explode('/', $start);
    $from_Date = jalali_to_gregorian($splitDate[0], $splitDate[1], $splitDate[2], 1);
    $splitDate = explode('/', $end);
    $to_Date = jalali_to_gregorian($splitDate[0], $splitDate[1], $splitDate[2], 1);         

    $query = DB::statement('SELECT DISTINCT t.type_id pmrtypeid ,(CASE WHEN COUNT(t.type_id)-qb.cntrttypid IS Null THEN COUNT(t.type_id) ELSE COUNT(t.type_id)-qb.cntrttypid END)cnttypeid FROM type t JOIN room r
        on r.type_id=t.type_id
        LEFT JOIN (SELECT DISTINCT rt.type_id rttypid,COUNT(rt.type_id)cntrttypid FROM reserve_type rt
        JOIN reserve re
        ON re.reserve_id=rt.reserve_id
        JOIN type ty
        ON ty.type_id=rt.type_id
        WHERE ((? BETWEEN re.from_date AND re.to_date) or (? BETWEEN re.from_date AND re.to_date)) AND ty.hotel_id=?
        GROUP BY rt.type_id)qb
        ON qb.rttypid=t.type_id
        JOIN reserve_span rsn
        ON rsn.hotel_id=t.hotel_id
        WHERE r.hotel_id=? AND ((? BETWEEN rsn.from_date AND rsn.to_date) and (? BETWEEN rsn.from_date AND rsn.to_date)) and rsn.is_enable=1
        GROUP BY t.type_id)pmr
        on pmr.pmrtypeid=tps.type_id
        join type_feture tf
        on tps.type_id=tf.type_id' , [$from_Date,$to_Date,$hotel_id,$hotel_id,$from_Date,$to_Date] );
}

enter image description here

最佳答案

问题出在我的其他代码的额外部分上:

        )pmr
        on pmr.pmrtypeid=tps.type_id
        join type_feture tf
        on tps.type_id=tf.type_id

无用的括号产生了错误。我还按照 @Erubiel 的建议将 DB::statement() 更改为 DB::select()。

关于php - Laravel 中的 SQL 语法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51872430/

相关文章:

php - 当运行 `SELECT INNER JOIN WHERE t1.column=t2.column` 并且有多个匹配时,如何控制选择哪个匹配?

mysql - 使用查询需要来自与聊天消息相关的 MySQL 表的唯一详细信息

php - Laravel 检查集合是否包含外键

php - 防止浏览器控制台修改类(安全问题)

php - 生成 pdf 复选框时不显示

php - PDO 无效参数号错误信息

mysql - 在 Mysql Workbench 中,Synchronize Model with Database 在哪里

php - 如何限制人们使用相同的电子邮件和密码与php注册

php - 如何修复 Laravel 5.7 中的 "Invalid datetime format: 1366 Incorrect integer value: "错误?

php - 通过 Ajax 使用 Laravel 导出 CSV