setAppends on Laravel的需求

时间:2018-04-16 12:53:29

标签: php laravel

我有一个附加了一堆属性的模型。我遇到的问题是我不需要控制器中所有索引方法的属性我只需要几个。我试图用events方法附加它们,但它似乎不起作用。

以下是我的尝试:

setAppends

这只是返回订单但没有附加属性。如果我把它称为静态方法,我在互联网上寻找答案时看到它抛出一个异常,我需要对结果进行分页,并应用一些过滤器,如$orders = new Order; $order->setAppends(['overdueBy'])-get(); ,但如果我这样做,那么它调用方法在没有它的orderBy类上。在检索到的每个模型上调用它将产生n + 1问题。

是否可以根据需求进行追加?

2 个答案:

答案 0 :(得分:0)

setAppends方法适用于单行。所以你可以按如下方式使用它:

$order = Order::first(); // Or whatever you need

return $order->setAppends(['overdueBy]);

也可以迭代你的收藏并按照记录设置

$orders = Order::whichYouNeed();

$orders->each(function($order) {
   $order->setAppends(['overdueBy']); 
});

随心所欲。

答案 1 :(得分:0)

如果要在运行时附加数据,则应使用

$order->setAppends(['overdueBy'])->toArray();

但请记住,这将覆盖集合的现有属性

供参考,请参阅Eloquent: Serialization

我建议您使用makeHidden方法隐藏不必要的

属性参考请参阅hiding attributes