将存储过程结果传递给Laravel API资源

时间:2019-05-24 17:33:07

标签: json vue.js laravel-5 stored-procedures laravel-collection

我想将执行的存储过程的结果传递给我的PB.vue

但是问题是,这给了我一个错误:

  

在数组上调用成员函数first()

public function index()
{
    $pbs = DB::select('EXECUTE [dbo].[spQueryContainer]');

    return PBResource::collection($pbs); 
}

1 个答案:

答案 0 :(得分:1)

DB :: select($ query)返回一个 stdclass对象数组,而不是一个集合。但是,可以使用collect()函数对其进行转换:

$pbs = DB::select('EXECUTE [dbo].[spQueryContainer]');

$pbCollection = collect($pbs); //Transform the array into a Laravel Collection of stdclass

return PBResource::collection($pbCollection); 

即使Collection包含错误的Type(stdclass而不是PB),只要给定对象具有资源中使用的所有属性,资源仍将使用它。

如果您想使用更干净的解决方案,则应尝试将stdclass对象转换为PB对象。在此post上讨论了该主题。