Laravel构建器条件子句可以返回多于1个条件

时间:2018-04-06 08:26:32

标签: mysql laravel postgresql

我想在我收到特定请求时向我的查询添加一些额外的子句

我可以使用https://laravel.com/docs/5.6/queries#conditional-clauses

来完成
    ->when($markeplace_id !=0, function ($query) use ($marketplace_id){
       return $query->join('seller b', 'a.seller_id', '=', 'b.seller_id')
    });

    ->when($markeplace_id !=0, function ($query) use ($marketplace_id){
       return $query->join('marketplaces as c', 'c.marketplace_id', '=', 'b.marketplace_id')
    });
    ->when($markeplace_id !=0, function ($query) use ($marketplace_id){
       return $query->where('c.marketplace_id','=',$marketplace_id)
    });

条件子句只返回1个子句。但我有3.我应该使用3次,还是只能将它们捆绑到1?

    ->join('sellers as b', 'a.seller_id', '=', 'b.seller_id')
    ->join('marketplaces as c', 'c.marketplace_id', '=', 'b.marketplace_id')
    ->where('c.marketplace_id','=',$marketplace_id)

1 个答案:

答案 0 :(得分:1)

尝试

->when($markeplace_id !=0, function ($query) use ($marketplace_id){
   $query->join('seller b', 'a.seller_id', '=', 'b.seller_id');
   $query->join('marketplaces as c', 'c.marketplace_id', '=', 'b.marketplace_id');
   return $query->where('c.marketplace_id','=',$marketplace_id);
});

我没有测试过它。让我知道如果不能正常工作