【问题标题】:Laravel filter using conditionsLaravel 过滤器使用条件
【发布时间】:2018-08-22 15:05:18
【问题描述】:

我有一个雄辩的模型,叫做product。我需要使用 where 条件取决于同一张表中列的状态。这是我的代码

public function product_list(Request $request,Datatables $datatables){

    $product = Product::where('supplier_id',$request->supplier_id)->where('product','!=',3);

    return $datatables->eloquent($product)->filter(function ($query) use ($request) {
                    if($query->is_from_portalsite==1){
                        $query->where('status','>',1);
                     }
    })->make(true);

}

如果 is_from_portalsite 列等于 1,我需要检查 where 条件。如何在 laravel 中检查。

【问题讨论】:

  • $query->is_from_portalsite==1 应该是 $request->is_from_portalsite==1 如果我正确理解您的代码
  • 不,不是那样的。我在表is_from_portalsite 中有列,如果该列的值为1,那么我需要检查 where 条件。
  • 如果不是 1 会发生什么?
  • 如果不是 1 不需要检查 where 条件
  • 你为什么不写2个return语句?

标签: laravel eloquent laravel-5.4 laravel-filters


【解决方案1】:

试试这个(假设 is_from_portalsite 是布尔值):

$query->where('is_from_portalsite',0)->orWhere('status','>',1);

【讨论】:

  • is_from_portalsite 是布尔值。但这不是我想要的。我需要在过滤器中使用case when
  • 你是这个意思吗? $query->whereRaw('CASE WHEN is_from_portalsite=1 THEN status>1 ELSE TRUE END')
  • 是的,类似的。让我试试吧
猜你喜欢
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-23
  • 2021-10-05
  • 2015-03-15
  • 2021-11-20
相关资源
最近更新 更多