如何在查询中发送和使用数组,laravel

Posted

技术标签:

【中文标题】如何在查询中发送和使用数组,laravel【英文标题】:How to send and use an array in query, laravel 【发布时间】:2021-10-10 12:33:39 【问题描述】:

我想向我的控制器发送一个 id 数组,并在“whereIn”子句中使用该控制器。但它不起作用。我的代码是:

从视图:我正在使用 ajax 调用来获取 package_id[] 的值(您可以在下面的表格中看到)。值在数组中。

   <form action="" class="price-form" method="post">
       @csrf
       <input type="text" value="" name="package_id[]" id="package_id">
       <input type="text" value="50" name="member_number" id="member_number">
       <button type="submit">Submit</button>
   </form>

来自控制器:product_id(数组形式)被拖到控制器中。

public function get_package_price(Request $request) 

    if($request->ajax())
        $member_number = $request->get('member_number');

        $package_ids = $request->get('package_id');

        if($member_number != '')
        
            $get_price = DB::table('package_plans')->whereIn('package_id',$package_ids)
            ->where('user_limit', '>=', $member_number)->first();

            $get_plan_id = $get_price->id;
            $get_package_price = $get_price->price_in_usd;
            $user_limit = $get_price->user_limit;
     
        

        $data = array(
            'get_package_price'  => $get_package_price,
            'get_plan_id'  => $get_plan_id,
            'user_limit'  => $user_limit
        );

        echo json_encode($data);
    

脚本代码:

<script>
    $(document).ready(function()
        $("#member_number").keyup(function(event)
            event.preventDefault();
            var member_number = $('#member_number').val();
            var package_id = $('#package_id').val();
            fetch_package_title(package_id, member_number);

            function fetch_package_title(package_id = '', member_number = '')
            var currency_val = $('#currency_value').val();

            $.ajax(
                url : 'get_package_price',
                method : 'GET',
                data : package_id:package_id, member_number:member_number,
                dataType : 'json',
                success : function(data)
                    console.log(data.get_package_price);
                    var final_price = data.get_package_price;
                    var price_per_member =( data.get_package_price/data.user_limit ) 
                                          *member_number;
                    $('#package_price').html(data.get_package_price);
                    $('#cost_per_seat').html(price_per_member);
                    $('#cost_per_head').val(price_per_member);
                    $('#get_plan_id').val(data.get_plan_id);
                    $('#total_price').val(price_per_member);
                
            );
        

      );
    );
  );

</script>

【问题讨论】:

您从 1 个 id 为 #package_id 的元素中获取 package_id 请注意,您可以使用 var data = $('form').serialize(); 从表单中获取完整数据并在您的 ajax 调用中使用它。如果它只有一个值,我真的不明白为什么你会希望它作为一个数组发布...... 【参考方案1】:

package_id[] 如果您有 MANY 字段,则使用构造。如果您有许多值的 ONE 字段(例如 1,2,3,4) - 使用 package_id

<input type="text" value="" name="package_ids" id="package_id">
$package_ids = $request->get('package_ids');

【讨论】:

以上是关于如何在查询中发送和使用数组,laravel的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中 MySQL 查询的 where 子句中使用数组 [重复]

如何使用 laravel 和 mysql 数据库获取数组中的数组?

如何使用laravel 7在db中传递数组

如何使用从 laravel 中的数组中获取的各种术语进行 mysql 关联查询

如何在 LARAVEL_7 中通过迁移发送多个复选框

如何访问我在 Laravel 4 中手动发送的请求的查询字符串参数?