Sql 如何根据用户输入获取两个值之间的列

Sql 如何根据用户输入获取两个值之间的列,sql,laravel,eloquent,Sql,Laravel,Eloquent,我被困在一个解决方案上,我想在put value中按用户获取列 对于1000卢比。我希望所有数据低于1000 对于2000卢比,我希望数据介于1000和2000之间 对于3000卢比,我希望数据介于2000和3000之间 对于4000卢比。我希望数据介于4000和4000之间 我已经像下面那样做了,但它不起作用 $product = Product::select('product_price') ->get();

我被困在一个解决方案上,我想在put value中按用户获取列

  • 对于1000卢比。我希望所有数据低于1000

  • 对于2000卢比,我希望数据介于1000和2000之间

  • 对于3000卢比,我希望数据介于2000和3000之间

  • 对于4000卢比。我希望数据介于4000和4000之间
  • 我已经像下面那样做了,但它不起作用

         $product = Product::select('product_price')
                            ->get();
    
            foreach ($product as $value) {
    
                if($value->product_price == 1000){
    
                      $prod1 = Product::join('company', 'timeline_product.company_id', '=', 'company.company_id')
                        ->select('company.name', 'company.logo', 'timeline_product.company_id', 'timeline_product.product_name', 'timeline_product.product_desc', 'timeline_product.product_price','timeline_product.reward_points' ,'timeline_product.created_at', 'timeline_product.updated_at')
                        ->where('timeline_product.product_price','<=',1000)
                        ->orderBy('timeline_product.updated_at', 'desc')
                        ->limit($limit)
                        ->offset($offset)
                        ->get();
    
                       // $post = array('result' => $prod1); 
    
                }elseif ($value->product_price == 2000) {
    
                        $prod2 = Product::join('company', 'timeline_product.company_id', '=', 'company.company_id')
                        ->select('company.name', 'company.logo', 'timeline_product.company_id', 'timeline_product.product_name', 'timeline_product.product_desc', 'timeline_product.product_price','timeline_product.reward_points' ,'timeline_product.created_at', 'timeline_product.updated_at')
                        ->whereBetween('timeline_product.product_price', [1000, 2000])
                        ->orderBy('timeline_product.updated_at', 'desc')
                        ->limit($limit)
                        ->offset($offset)
                        ->get();
    
                      // $post = array('result' => $prod2); 
    
                }elseif ($value->product_price == 3000) {
    
                         $prod3 = Product::join('company', 'timeline_product.company_id', '=', 'company.company_id')
                        ->select('company.name', 'company.logo', 'timeline_product.company_id', 'timeline_product.product_name', 'timeline_product.product_desc', 'timeline_product.product_price','timeline_product.reward_points' ,'timeline_product.created_at', 'timeline_product.updated_at')
                        ->whereBetween('timeline_product.product_price', [2000, 3000])
                        ->orderBy('timeline_product.updated_at', 'desc')
                        ->limit($limit)
                        ->offset($offset)
                        ->get();
                      // $post = array('result' => $prod3); 
    
                }elseif ($value->product_price == 4000) {
    
                         $prod4 = Product::join('company', 'timeline_product.company_id', '=', 'company.company_id')
                        ->select('company.name', 'company.logo', 'timeline_product.company_id', 'timeline_product.product_name', 'timeline_product.product_desc', 'timeline_product.product_price','timeline_product.reward_points' ,'timeline_product.created_at', 'timeline_product.updated_at')
                        ->whereBetween('timeline_product.product_price', [3000, 4000])
                        ->orderBy('timeline_product.updated_at', 'desc')
                        ->limit($limit)
                        ->offset($offset)
                        ->get();
    
                      // $post = array('result' => $prod4); 
    
                }
    
            // array_push($product,$post);
    
            }
    
    $product=product::select('product\u price'))
    ->get();
    foreach($product as$value){
    如果($value->product\u price==1000){
    $prod1=Product::join('company'、'TIMENDARY\U Product.company\U id'、'='、'company.company\U id')
    ->选择('company.name'、'company.logo'、'timeline\u product.company\u id'、'timeline\u product.product\u name'、'timeline\u product.product\u desc'、'timeline\u product.product\u price'、'timeline\u product.reward\u points'、'timeline\u product.created\u at'、'timeline\u product.Update\u at')
    
    ->其中('timeline\u product.product\u price',”我想这就是您需要的:

    Product::join('company', 'timeline_product.company_id', '=', 'company.company_id')
        ->select('company.name', 'company.logo', 'timeline_product.company_id', 'timeline_product.product_name', 'timeline_product.product_desc', 'timeline_product.product_price', 'timeline_product.reward_points', 'timeline_product.created_at', 'timeline_product.updated_at')
        ->when(request('product_price') <= 1000, function ($q) {
            $q->where('timeline_product.product_price', '<=', 1000);
        })
        ->when(request('product_price') > 1000 && request('product_price') <= 2000, function ($q) {
            $q->whereBetween('timeline_product.product_price', [1000, 2000]);
        })
        ->when(request('product_price') > 2000 && request('product_price') <= 3000, function ($q) {
            $q->whereBetween('timeline_product.product_price', [2000, 3000]);
        })
        ->when(request('product_price') > 3000 && request('product_price') <= 4000, function ($q) {
            $q->whereBetween('timeline_product.product_price', [3000, 4000]);
        })
        ->orderBy('timeline_product.updated_at', 'desc')
        ->limit($limit)
        ->offset($offset)
        ->get();
    
    Product::join('company'、'timeline\u Product.company\u id'、'='、'company.company\u id')
    ->选择('company.name'、'company.logo'、'timeline\u product.company\u id'、'timeline\u product.product\u name'、'timeline\u product.product\u desc'、'timeline\u product.product\u price'、'timeline\u product.reward\u points'、'timeline\u product.created\u at'、'timeline\u product.Update\u at')
    
    ->当(请求(‘产品价格’)何处(‘时间线’产品价格’,’查看您的解释,您的产品列表似乎只有
    产品价格=1000、2000、3000和4000

    因此,根据当前场景和您的代码,您似乎只有四种产品。下面是一个更准确的代码,它将根据价格返回列表中的所有产品-

    $product = Product::select('product_price')->get();
    $prods_according_price = [];
    foreach ($product as $value) {
        $end_filter = $value->product_price
        $start_filter = $end_filter - 1000;
        $prods_according_price[$end_filter][] = Product::join('company', 'timeline_product.company_id', '=', 'company.company_id')
            ->select('company.name', 'company.logo', 'timeline_product.company_id', 'timeline_product.product_name', 'timeline_product.product_desc', 'timeline_product.product_price','timeline_product.reward_points' ,'timeline_product.created_at', 'timeline_product.updated_at')
            ->whereBetween('timeline_product.product_price',[$start_filter, $end_filter])
            ->orderBy('timeline_product.updated_at', 'desc')
            ->limit($limit)
            ->offset($offset)
            ->get();
    }
    print_r ($prods_according_price)
    
    您将获得如下输出:

    Array(
      [1000] => Array(
          [0] => Array(.....),
          [1] => Array(.....),
         ),
      [2000] => Array(
          [0] => Array(.....),
          [1] => Array(.....),
         ),
      [3000] => Array(
          [0] => Array(.....),
          [1] => Array(.....),
         ),
      [4000] => Array(
          [0] => Array(.....),
          [1] => Array(.....),
         )
    )
    
    如果有任何打字错误或警告,让我知道。因为我没有执行它


    您希望将其分离还是全部放在一个变量中?@MohamedSabil83我希望所有数据都放在一个变量中如果用户选择1000,则只输出与我想要的1000相关的数据,所有数据都相同(&M)