首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语句不返回结果,但sql语句返回结果。

语句不返回结果,但sql语句返回结果。
EN

Stack Overflow用户
提问于 2018-01-22 08:26:33
回答 1查看 435关注 0票数 0

Laravel查询生成器

代码语言:javascript
复制
     $data = CustomerPrepaid
            ::join('pos_sales', 'customer_prepaid.customer_id', '=', 'pos_sales.customer_id')
            ->join('pos_sales_product', 'pos_sales.pos_sales_code', '=', 'pos_sales_product.pos_sales_code')
            ->where('pos_sales_product.product_id', 'customer_prepaid.product_id')
            ->select('customer_prepaid.customer_id', 'customer_prepaid.created_at',
            'pos_sales_product.pos_sales_product_code as reference_no', 

'customer_prepaid.product_id', 'customer_prepaid.balance', 
        'last_used', 'expiry_date', 'customer_prepaid.amount as price')
        ->offset(($page-1)*$limit)->limit($limit)->get();

SQL

代码语言:javascript
复制
SELECT customer_prepaid.customer_id, customer_prepaid.created_at as purchase_date,
pos_sales_product.pos_sales_product_code as reference_no, customer_prepaid.product_id, 
customer_prepaid.balance, customer_prepaid.amount*customer_prepaid.balance as value, 
last_used, expiry_date, customer_prepaid.amount as price,
customer_prepaid.amount*customer_prepaid.balance as total
FROM customer_prepaid
JOIN pos_sales ON customer_prepaid.customer_id = pos_sales.customer_id
JOIN pos_sales_product ON pos_sales.pos_sales_code = pos_sales_product.pos_sales_code
WHERE pos_sales_product.product_id = customer_prepaid.product_id 

在服务器上执行的结果SQL返回正确的结果,但我没有得到令人信服的结果,为什么会这样呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-22 09:29:25

天啊,我花了很长时间才意识到你滥用了->where

->where更改为->whereColumn

代码语言:javascript
复制
$data = CustomerPrepaid
        ::join('pos_sales', 'customer_prepaid.customer_id', '=', 'pos_sales.customer_id')
        ->join('pos_sales_product', 'pos_sales.pos_sales_code', '=', 'pos_sales_product.pos_sales_code')
        ->whereColumn('pos_sales_product.product_id', 'customer_prepaid.product_id')
        ->select(
            'customer_prepaid.customer_id',
            'customer_prepaid.created_at',
            'pos_sales_product.pos_sales_product_code as reference_no',
            'customer_prepaid.product_id', 'customer_prepaid.balance',
            'last_used', 'expiry_date', 'customer_prepaid.amount as price'
        )
        ->offset(($page-1)*$limit)
        ->limit($limit)
        ->get();

您必须使用whereColumn而不是where来进行列比较。否则,它将期望设置第三个参数value

查看有关如何使用whereColumnhttps://laravel.com/docs/5.5/queries#where-clauses的文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48377325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档