【问题标题】:Call to member function on NULL in Laravel PhP在 Laravel PhP 中调用 NULL 上的成员函数
【发布时间】:2017-01-16 23:16:15
【问题描述】:

我有以下错误。客户模型与约会模型有关系。当我用他们的 id (1) 替换变量 $client 时,它成功地返回了一个约会集合。但是使用变量它返回NULL。我正在尝试遍历每个客户的约会以计算出总持续时间。我的错误是,在每次循环使用之前的 $client 变量时,我无法检索约会。

仅供参考,foreach $clients as $client 循环返回所有客户端的集合。

在 null 上调用成员函数约会()

公共函数自动生成(请求 $request){

    $date1       =  $request->input('date_from');
    $date2       =  $request->input('date_to'); 
    $customer    = $request->input('customer_account');

    if(count($customer) > 0)
    {       
        $clients     = Customer::find($customer)->client()->get();

        foreach($clients as $client)
            { 
                $appointments = Client::find($clients)->appointments()->get();

                    foreach($appointments as $appointment)
                    {       
                        //other code            
                    }               
            }

        //other code


    }
    $invoices = Invoice::all();
    return redirect('invoice');
}

【问题讨论】:

    标签: php laravel-5.3


    【解决方案1】:

    我不确定您的 $client 变量是如何构建的,但您可能应该使用

    $appointments = Client::find($client)->appointments()->get();
    

    或者

    $appointments = Client::find($client->id)->appointments()->get();
    

    请注意在我的第一个示例中使用$client 而不是$clients

    【讨论】:

    • 我试过 $clients 和 $client。两者都返回相同的错误。但是,您的建议 $client->id 仅在我 dd($appointments); 时才返回第一个客户的约会;我本来希望为每个客户返回所有约会?
    • 您说当您使用客户端的id时它起作用了,所以问题是如何从变量$client中获取客户端的id。我以为是$client->id,但我不知道你的结构。
    • 好的。我已经完成了整个过程,并且运行良好。 dd();似乎只返回第一个客户端或最后一个客户端,具体取决于您将它放在 foreach 循环的 } 闭包的哪一侧。谢谢。
    • 太棒了。很高兴我能帮上忙!
    猜你喜欢
    • 1970-01-01
    • 2017-12-06
    • 2016-09-04
    • 2016-06-29
    • 2018-04-03
    • 2021-10-06
    • 2019-06-17
    • 2020-10-22
    • 2018-02-11
    相关资源
    最近更新 更多