在Laravel回调中使用匿名PHP函数作为变量

飞行L123

我在Laravel中运行以下代码以在模型上加载各种关系Product

$product->load([
        'skus' => function($query){

                $query->select($this->skuFields)->with([

                        'uniqueItem' => function($query){
                                // <----------reuse the code below--------->
                                $query->with([
                                        'fulfillmentCenterUniqueItems',
                                        'products' => function($query){

                                                $query->select($this->productFields)->with([
                                                        'skus' => function($query){
                                                                $query->select($this->skuFields);
                                                        }
                                                ]);
                                        },
                                        'skus' => function($query){
                                                $query->select($this->skuFields);
                                        }
                                ]);
                               // <----------reuse the code above--------->
                        }
                ]);
        },
        'uniqueItem' => function($query) {

                //need to reuse code here
        },
]);

从代码的注释中可以看到,有一个地方我想重用一些代码,因此我希望将其放在函数中并重用。

因此,我做了以下工作:

$uniqueItemLoadFunction = function($query)
{

        $query->with([
                'fulfillmentCenterUniqueItems',
                'products' => function($query){

                        $query->select($this->productFields)->with([
                                'skus' => function($query){
                                        $query->select($this->skuFields);
                                }
                        ]);
                },
                'skus' => function($query){
                        $query->select($this->skuFields);
                }
        ]);
};

$product->load([
            'skus' => function($query) use ($uniqueItemLoadFunction){

                    $query->select($this->skuFields)->with([

                            'uniqueItem' => $uniqueItemLoadFunction($query)
                    ]);
            },
            'uniqueItem' => function($query) {

                    //need to reuse code here
            },
    ]);

但是,我现在收到BadMethodCallException

Call to undefined method Illuminate\\Database\\Query\\Builder::fulfillmentCenterUniqueItems()

以原始方式运行代码时未发生此错误。这使我认为我没有正确使用匿名函数。我该如何进行这项工作?

模糊数学

您走对了路。但是:uniqueItem-key需要一个功能。但是实际上您是立即调用该函数,并且仅将重新调整后的值返回给键(在这种情况下为null)。现在,laravel尝试执行给定的功能时,它将尝试执行null()这是不可能的。

长话短说:拆下括号

'uniqueItem' => $uniqueItemLoadFunction

这样,您可以将函数的引用分配给键,而不是返回值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

匿名函数作为回调

来自分类Dev

在C ++中使用SQLite:对象函数作为回调

来自分类Dev

如何在imagesLoaded回调函数中使用变量?

来自分类Dev

在回调函数中使用局部变量

来自分类常见问题

PHP:如何使用类函数作为回调

来自分类Dev

Laravel-回调后在验证器中使用变量

来自分类Dev

在匿名函数.on中使用变量

来自分类Dev

在匿名函数中使用变量

来自分类Dev

不增加匿名回调函数中的变量

来自分类Dev

在PHP中使用匿名函数

来自分类Dev

使用函数指针作为回调

来自分类Dev

Javascript匿名回调函数

来自分类Dev

PHP回调函数和变量引用

来自分类Dev

在块回调函数中使用它

来自分类Dev

如何在匿名函数中使用变量?

来自分类Dev

JavaScript回调只是匿名函数作为函数调用中的参数发送吗?

来自分类Dev

使用命名空间中的静态函数作为PHP中的回调

来自分类Dev

PHP 5.3.2替代在匿名函数中使用$ this?

来自分类Dev

匿名回调函数说明

来自分类Dev

在php中使用对象元素过滤数组时如何指定回调函数?

来自分类Dev

将函数作为回调传递给使用钩子创建的React状态不会反映变量的新值

来自分类Dev

在lldb中使用匿名枚举作为函数参数时出错

来自分类Dev

在lldb中使用匿名枚举作为函数参数时出错

来自分类Dev

PHP错误,回调函数中有变量

来自分类Dev

PHP错误,回调函数中有变量

来自分类Dev

我可以使用 PHP 匿名函数作为参数,而不将函数分配给变量吗?

来自分类Dev

在回调与外部变量和垃圾回收器中使用“ this”

来自分类Dev

在AJAX回调中使用间隔,变量不更新

来自分类Dev

在r中使用变量作为函数参数

Related 相关文章

热门标签

归档