路由参数不适用于 Backpack CRUDController 的问题

问题描述 投票:0回答:1

在应用带有动态路由参数的基本子句时,我在

CrudController
中遇到了一个奇怪的问题。我有一个这样的自定义路线:

Route::crud('box/{receive_order_id}/list', 'BoxCrudController');

这个想法是从 URL 中捕获

receive_order_id
参数并在查询上应用基本子句。但是,虽然 URL 参数已正确传递并且可以记录,但在应用于查询时它不起作用。对值进行硬编码效果很好。

这是带有一些上下文内嵌注释的代码:

protected function setupListOperation()
{
    // Get the receive_order_id from the route
    $receiveOrderId = request('receive_order_id');
    
    // Debugging shows the value is passed correctly
    // dd($receiveOrderId); // outputs "24"
    // dd(gettype($receiveOrderId), $receiveOrderId === "24");  // Outputs: string, true

    // Hardcoded value works perfectly
    // $this->crud->addBaseClause('where', 'receive_order_id', "24" ); // works fine

    // Checking the SQL generated by the query
    // dd($this->crud->query->toSql()); // Outputs: "select * from `boxes` where `receive_order_id` = ?"
    // dd($this->crud->query->getBindings()); // Outputs: [0 => "24"]

    // Applying the URL parameter dynamically doesn't work (no results returned)
    $this->crud->addBaseClause('where', 'receive_order_id', $receiveOrderId ); // no results
}

问题:

当我通过 URL 动态传递

receive_order_id
时,它不会返回任何结果,即使值和查询看起来是正确的。

关于可能导致此问题的原因有什么想法吗?

我尝试过的:

  1. 记录值
    request('receive_order_id')
    输出正确的值
    "24"
    且类型为
    string
  2. 硬编码基本子句:与硬编码
    "24"
    配合良好。
  3. 检查 SQL 和绑定:生成的查询看起来不错,具有
    receive_order_id = ?
    和正确的
    "24"
    绑定。
laravel query-builder laravel-backpack
1个回答
0
投票

您需要添加请求处理程序作为函数参数

use Illuminate\Http\Request;

public function setupListOperation(Request $request)
{
   $order_d = $request->receive_order_id; // 'receive_order_id' as per route 
  // some code here
}
© www.soinside.com 2019 - 2024. All rights reserved.