如何在查询中发送和使用数组,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 数据库获取数组中的数组?