【问题标题】:Indirect modification of overloaded property Illuminate\Http\Request::$values has no effect间接修改重载属性 Illuminate\Http\Request::$values 无效
【发布时间】:2023-04-08 04:53:01
【问题描述】:

我正在尝试更改收藏。但是即使没有出现错误的内容,错误也已经出现了

foreach ($request->values as $id => &$value) {
        $values[1] = $this->repository->getById($request->id)->values[$id][1];
        $values[2] = $this->repository->getById($request->id)->values[$id][2];
        $values[3] = $this->repository->getById($request->id)->values[$id][3];
        $values[4] = $this->repository->getById($request->id)->values[$id][4];
        //dd($value);
    }

【问题讨论】:

  • 向请求对象添加数据不是一个好主意。但如果你真的想这样做,这里是the solution。你的方法行不通。
  • 您拥有&$value,但正在修改$values,您这样做的目的是什么?为什么要修改请求?为什么不使用您需要的存储库项目创建一个新集合?
  • @apokryfos 这是一个错字,因为我正在尝试其他东西,但它甚至没有去那里,它在 foreach 上出错
  • 这可能是因为$request->values 不存在。它实际上是通过请求的魔术__get 方法获得的,因此您不能通过引用传递结果的元素,因为结果本身不是实际的基础值。再说一次,为什么不创建一个新系列并继续努力呢?为什么需要修改请求?

标签: php laravel foreach


【解决方案1】:

我重构了我的代码,但使用了一个新数组而不是填充现有的 $request

foreach ($request->values as $id => $value) {
        $values[$id][0] = $request->values[$id][0];
            for ($i = 1; $i <= 4; $i++) {
                if (isset($this->repository->getById($request->id)->values[$id][$i])) {
                    $values[$id][$i] = $this->repository->getById($request->id)->values[$id][$i];
                } else {
                    $values[$id][$i] = '';
                }
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    相关资源
    最近更新 更多