我通过ajax在字符串中输入了id,
示例:
"1,2"
在我的控制器中,我想使用带有id =>的 whereIn 在一个查询中更新产品的多行[1,2]
。
AJAX:
$('#add_product').click(function() {
var id = $('#get_value').val();
$.ajax({
type: 'POST',
url: "{{action('ProductController@updateProduct')}}",
data: {
id: id
},
success: function(data){
alert("success");
}
});
});
控制器:
public function updateProduct(Request $request){
$test_value = collect($request->id);
$updateProduct = Product::whereIn('id',$test_value)
->update(['title' => 'My title']);
}
但我在网络中有这个错误:
SQLSTATE [22007]:无效的日期时间格式:1292截断错误的DOUBLE值:'1,2'(SQL:更新“产品”设置“title”=“我的标题”其中“id”在(1, 2))
答案 0 :(得分:0)
在 $ test_value 中,您将值"1,2"
作为字符串获取,因此您必须首先使用 explode()函数使其成为数组(爆炸的内容) )函数do是here),
$ids = explode(',',$test_value);
然后将此$ids
传递给您的函数。
public function updateProduct(Request $request){
$test_value = $request->id;
$ids = explode(',',$test_value);
$updateProduct = Product::whereIn('id',$ids)
->update(['title' => 'My title']);
}
答案 1 :(得分:0)
您需要删除 collect()
public function updateProduct(Request $request){
$test_value = $request->id;
$ids = explode( ',',$test_value);
$updateProduct = Product::whereIn('id',$ids)
->update(['title' => 'My title']);
}
答案 2 :(得分:-1)
您无法更新表格中的字段 - 批量。您需要通过foreach逐个更新
class ContentPostProc
{
public function run(array &$parameters) {
$searchReplace = [
'http://domain.tld' => 'https://domain.tld'
];
$parameters['pObj']->content = str_replace(array_keys($searchReplace), array_values($searchReplace), $parameters['pObj']->content);
}
}