如何在controller laravel中获取用于另一个函数的id

如何在controller laravel中获取用于另一个函数的id,laravel,controller,Laravel,Controller,我试图在控制器中使用show函数的id 我的控制器使用此$id正常工作 public function show($id) { $DigestReport = Meo::find($id); return view('digest-report.show', ['DigestReport' => $DigestReport]); } 我正在尝试将相同的$id用于另一个函数 public function getMailRecipients($id){

我试图在控制器中使用show函数的id

我的控制器使用此$id正常工作

    public function show($id)
{
    $DigestReport = Meo::find($id);
    return view('digest-report.show', ['DigestReport' => $DigestReport]);
}
我正在尝试将相同的$id用于另一个函数

    public function getMailRecipients($id){
    $meoId = Meo::find(id);
    $mailRecipients = $this->meoRepository->getMailRecipients($meoId);
    return DataTables::of($mailRecipients)->make();

}
但是我得到了以下错误

参数太少,无法正常工作 DigestReportController::getMailRecipients(),第54行传递了0,并且 正好是1

我怎样才能修好它

添加:如果需要,这是我的存储库

public function getMailRecipients($meoId){
    return DB::table('mail_recipients')->where('meo_id', '=', $meoId)->select('id', 'name', 'email')->get();
My api.php存储的路由在哪里

Route::get('/digest-report/mail-recipients', 'DigestReportController@getMailRecipients')->name('digest-report.mail-recipients');
我使用此控制器的视图用于生成数据表

$(document).ready(function () {
            $('#mail-recipient-table').DataTable({
                "processing": true,
                "serverSide": true,
                "ajax": '{{route('digest-report.mail-recipients')}}',
                "columns": [{data:'id'},{data: 'name'},{data: 'email'}]
            });
        })

谢谢

好的,有两种方法

  • 在您的
    web.php
    中,您将更新您的路线,以便
  • 然后,您的javascript代码将

    $(document).ready(function () {
        $('#mail-recipient-table').DataTable({
             "processing": true,
              "serverSide": true,
              "ajax": '{{route('digest-report.mail-recipients', $DigestReport->id)}}',
              "columns": [{data:'id'},{data: 'name'},{data: 'email'}]
        });
    })
    
  • 在控制器中,您将更新
    getMailRecipients

  • 您的javascript代码将是相同的

    好的,有两种方法可以做到这一点

  • 在您的
    web.php
    中,您将更新您的路线,以便
  • 然后,您的javascript代码将

    $(document).ready(function () {
        $('#mail-recipient-table').DataTable({
             "processing": true,
              "serverSide": true,
              "ajax": '{{route('digest-report.mail-recipients', $DigestReport->id)}}',
              "columns": [{data:'id'},{data: 'name'},{data: 'email'}]
        });
    })
    
  • 在控制器中,您将更新
    getMailRecipients

  • 您的javascript代码将是相同的

    向我们显示您的路线以及您呼叫
    getMailRecipients($id)
    @mmabdelgawad更新的位置,谢谢您的路线中没有
    {id}
    ,因此它永远无法进入您的控制器显示您的路线以及您呼叫
    getMailRecipients($id)
    @mmabdelgawad更新的位置,感谢您的路由中没有
    {id}
    ,因此它永远无法进入您的控制器进行回复,现在我遇到以下错误$id未定义,请在刀片模板中选择变量。将{{$id}替换为{$id???''''}}好的,我在js中添加了$DigestReport->id,问题解决了,谢谢!感谢回复,现在我有以下错误$id未定义,请在刀片模板中选择变量。将{{$id}替换为{$id???''''}}好的,我在js中添加了$DigestReport->id,问题解决了,谢谢!
    public function getMailRecipients(Request $request){
        $meoId = Meo::find($request->id); // or using helper request('id') function
        $mailRecipients = $this->meoRepository->getMailRecipients($meoId);
        return DataTables::of($mailRecipients)->make();
    }