从控制器中的 url 获取 id 值并显示关联的值 laravel

Getting id value from url in controller and displaying values associated laravel

我正在尝试使用 laravel jetstream 和 livewire 创建一个票务管理系统。在用户页面中有一个 table,其中包含用户创建的所有票证。当用户点击按钮打开一张特定的工单时,它应该传递工单的 ID 并重定向到另一个页面,在那里它接收他点击的那张工单的数据,如标题、消息等。

id 通过 url 传递,但我的主要问题是每当我尝试在视图中显示该数据时,没有任何显示,也没有错误。我认为我的控制器可能有问题。

这是我的路线:

Route::get('tickets.answers/{id}', [TicketsController::class, 'answers']);

重定向到该特定工单的按钮:

<a href="{{ url('tickets.answers' . '/'. $ticket->id ) }}" >    <x-jet-secondary-button >
                See Answer
</x-jet-secondary-button></a>

答案控制器:

  public function render(Request $request)
    {
        $tickets =  Ticket::where('id', $request->url('id'));
        
             
    return view('livewire.tickets.answers', [
        'tickets' => $tickets,
       
    ]);
    }

以及我如何尝试在 blade 中显示:

@foreach($tickets as $key => $ticket)
<!-- This example requires Tailwind CSS v2.0+ -->
<div class="bg-white shadow overflow-hidden sm:rounded-lg">
    <div class="px-4 py-5 sm:px-6">
      <h3 class="text-lg leading-6 font-medium text-gray-900">
        Ticket nº {{$ticket->id}} - {{$ticket->title}}
      </h3>
     
    </div>
</div>
    @endforeach

在您的 TicketsController 中,您可以像这样获取 id

public function answer(Request $request, int $id)
{
    // Use the find() method, instead of where(), when searching for the primary key
    $tickets =  Ticket::find($id);

    // .. more
        
}

在你的路由文件中你指定了一个 answer 方法,所以在你的 TicketsController.

中使用它
// See how to name a route
Route::get('tickets.answers/{id}', [TicketsController::class, 'answers'])->name('tickets.answers');

然后在您的视图中使用命名路由,如下所示:

<a href="{{ route('tickets.answers', ['id' => $ticket->id]) }}">

您可以在 Laravel docs 中看到类似的示例。