Php SET在拉雷维尔按需追加
我有一个模型,它有一系列附加属性。我遇到的问题是,我不需要控制器中index方法的所有属性,我只需要一些属性。我试图用setAppends方法附加它们,但它似乎不起作用 以下是我尝试过的:Php SET在拉雷维尔按需追加,php,laravel,Php,Laravel,我有一个模型,它有一系列附加属性。我遇到的问题是,我不需要控制器中index方法的所有属性,我只需要一些属性。我试图用setAppends方法附加它们,但它似乎不起作用 以下是我尝试过的: $orders = new Order; $order->setAppends(['overdueBy'])-get(); 这只是返回订单,但没有附加属性。如果我将其称为静态方法(我在internet上查找答案时看到),它会引发异常,我需要对结果进行分页,并应用一些过滤器(如orderBy),但如果
$orders = new Order;
$order->setAppends(['overdueBy'])-get();
这只是返回订单,但没有附加属性。如果我将其称为静态方法(我在internet上查找答案时看到),它会引发异常,我需要对结果进行分页,并应用一些过滤器(如orderBy),但如果我这样做,则它会在没有该方法的生成器类上调用该方法。在检索到的每个模型上调用它将产生n+1问题
是否可以按需提供附件 setAppends方法用于单行。因此,您可以按如下方式使用它:
$order=order::first;//或者你需要的任何东西
return$order->setAppends['overdueBy]
还可以在集合上迭代并按记录设置
$orders=订单::您需要什么
如果您想在运行时追加数据,那么应该使用 $order->setAppends['overdueBy']->toArray 但请记住,这将覆盖集合的现有属性 有关参考信息,请参见 我建议您使用makeHidden方法来隐藏不必要的内容
属性参考参见您可以将其缩短:$orders->each->setAppends['overdueBy'];当您执行Order::all时,它是如何工作的?它是否循环抛出每个循环,然后追加?如何将其急切加载?您不能将急切加载与appends一起使用,它只会将某些内容附加到json@Matz,那么这是否意味着$append=['orderBy']在Model::class上,循环是否会抛出检索到的每个模型,然后附加自定义作用域?我现在使用laravel调试栏检查,不幸的是,当我将执行查询的作用域附加到关系时,它会生成20个额外查询。overdueBy到底是什么?关系?范围?你能把订购的型号寄出去吗?
$orders->each(function($order) {
$order->setAppends(['overdueBy']);
});