简体   繁体   English

在Where子句(Laravel)中使用子查询的结果

[英]USE result of sub query in Where clauses ( Laravel )

I'm trying to use a result of subquery in where clause , but I failed 我正在尝试在where子句中使用子查询的结果,但失败了

I'm using a laravel db class 我正在使用laravel db类

this is my code 这是我的代码

        DB::table('sales as SL')
        ->join('prsn as PR1','PR1.id_person','=','SL.customer_id')
        ->join('prsn as PR2','PR2.id_person','=','SL.investor_id')
        ->select('SL.customer_id' ,'SL.investor_id','SL.type_agd','SL.status','SL.id_agd','PR1.full_name_person as Buyer'
            ,'PR2.full_name_person as Seller','PR1.mobile1_person as Mobile',
            DB::raw('(select SUM(money_operation) from opers where agd_operation = SL.id_agd AND  ty IN ("3","4","5","6","7","8","9","10","12") AND status = 1 ) as Madfoo3'),
            DB::raw('(select SUM(money) from inst where agd_id = SL.id_agd AND date <= "'.DT::Today('Ymd').'" AND type != "D") as Matloob'),
            DB::raw('(select (Matloob - Madfoo3 ))   Mutakher' ))
        ->whereRaw('(Mutakher > 0)')
        ->paginate();

this error appear: 出现此错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Mutakher' in 'where clause' (SQL: select count(*) as aggregate from `sales` as `SL` inner join `prsn` as `PR1` on `PR1`.`id_person` = `SL`.`customer_id` inner join `prsn` as `PR2` on `PR2`.`id_person` = `SL`.`investor_id` where (Mutakher > 0))
/var/www/Taqseet/vendor/laravel/framework/src/Illuminate/Database/Connection.php#625

I want to make a condition if the "Mutakher" > 0 give me the raw. 如果“ Mutakher”> 0给我原始数据,我想做一个条件。

Thanks 谢谢

I solve this problem 我解决这个问题

    DB::table('sales as SL')
    ->join('prsn as PR1','PR1.id_person','=','SL.customer_id')
    ->join('prsn as PR2','PR2.id_person','=','SL.investor_id')
    ->select('SL.customer_id' ,'SL.investor_id','SL.type_agd','SL.status','SL.id_agd','PR1.full_name_person as Buyer'
        ,'PR2.full_name_person as Seller','PR1.mobile1_person as Mobile',
        DB::raw('(select SUM(money_operation) from opers where agd_operation = SL.id_agd AND  ty IN ("3","4","5","6","7","8","9","10","12") AND status = 1 ) as Madfoo3'),
        DB::raw('(select SUM(money) from inst where agd_id = SL.id_agd AND date <= "'.DT::Today('Ymd').'" AND type != "D") as Matloob'),
        DB::raw('(select (Matloob - Madfoo3 ))   Mutakher' ))
    ->whereRaw('((Matloob - Madfoo3 ) > 0)')
    ->paginate();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM