Eloquent 所有和自定义 属性

Eloquent all and custom property

比方说,我有一个订单模型和一个查询所有订单的端点。

现在是这样的:

public function findAll(Request $request, Response $response, $args)
    {
        return Order::all()->toJson(JSON_PRETTY_PRINT);
    }

但是,我想将自定义属性添加到 json 响应中。

我的订单是这样的:

protected $fillable = [
        'productIds',
        'fullname',
        'phone',
        'location'
    ];

我想添加一个'names'和一个'totalPrice' 属性,它们不在数据库中,它们是通过getProductNameList()和getSumPrice()方法计算的.这怎么可能? :)

您可以使用 json 响应,这样您就可以传递自定义数组

    public function findAll(Request $request, Response $response, $args)
    {
            $order= Order::all();
       return response()->json([
            'order' =>   $order,
            'names' => 'CA',
           'totalPrice'=>150
        ]);
        }

根据你的问题,你使用不同的方法来计算 getProductNameList()getSumPrice() 。在这两种方法中你都可以 return $value 和方法响应你可以将它传递给这个数组 更多参考: https://laravel.com/docs/5.5/responses#json-responses

您可以尝试使用 $append 模型属性直接从模型添加数据,如下所示:

Class Order extends Model
{
    protected $append = ['attribute_name'];

    public function getAttributeName() {
        $dataToReturn = [];
        return ($dataToReturn);
    }
}

文档在这里:https://laravel.com/docs/5.4/eloquent-serialization#appending-values-to-json