【问题标题】:Even after updating the request parameters it's not taking即使在更新请求参数后它也不会
【发布时间】:2021-12-27 17:14:25
【问题描述】:

我正在接受包含limit,pagination,search 的用户的请求,并将请求详细信息存储在一个名为user_data 的变量中。

现在我将请求值之一更新为其他值,它也在更新 user_data 变量,但实际查询正在运行 before-update 值,为什么它不采用更新值,请帮助我解决问题..

$user_data=$request->all();
   //before update $user_data=array("limit"=>25,"search"="99.9");
$request->merge(["search"=> ($request->search *100)]);
   //When I debug the updated value is showing array("limit"=>25,"search"="9990");

$books=Apiato::call('Book@GetAllBooks',[$user_data,$request->from_date,$request->to_date]);

// When I dd($books) its taking the query value as `99.9` only

GetAllBooks.php

 public function run(Array $data, $from_date=null, $to_date=null)
    {
        if(!is_null($from_date) && !is_null($to_date))
        {
            $this->repository->pushCriteria(new WhereDateBetweenCriteria('created_at', $from_date, $to_date));
            return $this->repository->all();
        }
        else {
            return $this->repository->paginate();
        }
    }

我的要求是它应该采用更新的值而不是用户输入的值

【问题讨论】:

    标签: php laravel laravel-request apiato


    【解决方案1】:

    在更新$request 之前,您正在使用$data。 试试这个,

    $request->merge(["search"=> ($request->search *100)]);
    $data = $request->all();
    

    【讨论】:

    • 我也试过这种方法,但它不起作用
    • 这应该可以工作,$data = $request->all();$data['search'] = $data['search'] * 100;
    • @Izytourist,我尝试过这种方式也无法正常工作
    【解决方案2】:

    为什么要打扰$user_data?如果您只是为单一用途定义一个变量,请考虑根本不定义它。此外,在您的代码中,您有 [$user_data],这有问题。 $user_data 已经是一个数组;如果将其包装在[] 中,则会得到一个嵌套数组,这可能与您的Book@getAllBooks 调用不兼容。

    这段代码应该工作:

    $request->merge(['search' => $request->input('search') * 100]);
    $books = Apiato::call('Book@GetAllBooks', $request->input());
    

    【讨论】:

    • 对不起兄弟@Tim Lewis,我错误地放了 $data ,刚刚我更新了我的问题
    • 答案已调整?我认为这是一个错字,但[$user_data]$user_data 的问题仍然存在。
    • 实际上我在发送的同时也发送了其他文件,如果我改变这一行,它会妨碍我现有的代码,有没有其他方式不影响我当前的功能`$books = Apiato:: call('Book@GetAllBooks', [$user_data,一些其他文件]);`
    • [$request->input(), 'some', 'other', 'fields'];这仍然适用于我上面写的方式。 $request->input() 将是 ['limit' => 25, 'search' => 9990] 的数组。你是不是打算做array_merge()?像array_merge($request->input(), ['some', 'other', 'fields']),甚至更多在$request->merge(),像$request->merge(['search' => $request->input('search') * 100, 'some' => 'other', 'field' => 'value']),等等等等。只是将所有内容包装在另一个数组中似乎是错误的。
    • "Cannot unpack array with string keys" 如果我​​尝试使用你的代码会抛出错误
    猜你喜欢
    • 2022-01-12
    • 2021-07-26
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多