mysql - 在 Laravel 中使用 raw 时字段列表中的未知列

标签 mysql laravel

我有一个像这样工作的 mysql 查询:

SELECT mc.cart_id, mc.mystore_user_id, MIN(ci.created_at) AS created_at
FROM dmspro_mys_cart AS mc
INNER JOIN dmspro_mys_cart_item AS ci
ON ci.cart_id = mc.cart_id
WHERE mc.is_noticed = 0 AND ci.created_at < '2019-10-08 07:08:39'
GROUP BY mc.cart_id 

我将其转换为 Laravel 项目中的查询生成器:

public function getMinCreatedAt($cartTime)
    {
        $oSelect = $this->select("{$this->table}.cart_id", "{$this->table}.mystore_user_id",\DB::raw('MIN(ci.created_at) AS created_at'))
                        ->join('cart_item AS ci', 'ci.cart_id', '=', "{$this->table}.cart_id")
                        ->where("{$this->table}.is_noticed", '=', 0)
                        ->where('ci.created_at', '<', $cartTime)
                        ->groupBy("{$this->table}.cart_id")
                        ->get();

        return $oSelect;
    }

但是当我运行这个时,我收到错误:

Column not found: 1054 Unknown column 'ci.created_at' in 'field list' (SQL: select dmspro_mys_cart.cart_id, dmspro_mys_cart.mystore_user_id, MIN(ci.created_at) AS created_at from dmspro_mys_cart inner join dmspro_mys_cart_item as dmspro_mys_ci on dmspro_mys_ci.cart_id = dmspro_mys_cart.cart_id where dmspro_mys_cart.is_noticed = 0 and dmspro_mys_ci.created_at < 2019-10-09 15:51:37 group by dmspro_mys_cart.cart_id)

我该如何解决这个问题?

谢谢!

更新:dmspro_mys_ 是我的前缀

最佳答案

您的错误消息与您的查询不符。

错误消息中提到了名为“dmspro_mys_ci”的别名,但您的查询中不存在该别名。

您能仔细检查一下吗?

基本上,您正在调试错误的查询。

更新

由于 Laravel 设置了数据库表前缀,因此别名“ci”也带有前缀。 在 DB::raw() 中引用此别名时,表/别名不会自动添加前缀,因此您必须自己更改:

\DB::raw('MIN(ci.created_at) AS created_at')

至:

\DB::raw('MIN(dmspro_mys_ci.created_at) AS created_at')

关于mysql - 在 Laravel 中使用 raw 时字段列表中的未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58302594/

相关文章:

mysql - 将表转换为 0's and 1' s 的矩阵

php - 从 HTML 表单到 PHP 页面的 URL 链接

mysql - 检查 MySql 日期时间是否为空的更好方法

mysql - Laravel Eloquent 查询加入类似

php - 如何在 Laravel URL 参数中传递 Id

php - 对一个模型使用 2 个查询或 1 个查询并将其转为数组方法以获取其他查询

php - Laravel 注销不同的用户

laravel - 带破折号的奇怪 Laravel 查询生成器行为

MySql:按id和parent排序记录

PHP Zebra Forms 框架从 MySQL 中获取选择框的值