php - 无法将原始查询构造到数组中
问题描述
我有一个资源类和一个控制器,我正在做一些像这样的原始查询。我尝试使用json_encode()
and json_decode()
,但我不断收到错误消息。
*json_decode
Call to a member function first() on null
*Json_encode
Call to a member function first() on string
*只需返回 $test_table *
Call to undefined method stdClass::toArray()
测试控制器.php
use App\Test;
use App\Http\Resources\Test as TestResource;
public function index()
{
$test_table = DB::table('test_table')->select('id','test_col')->paginate(10);
return TestResource::collection($test_table);
}
*资源/测试
class Test extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return parent::toArray($request);
}
}
预期的输出应该是我可以在前端应用程序中处理的 JSON,使用GuzzleHttp的东西也应该能够很好地分页。
解决方案
我认为问题与在 select 语句之后使用分页有关。鉴于您正在使用 API 资源,您可以只返回您想要的数据:
测试控制器.php
use App\Test;
use App\Http\Resources\Test as TestResource;
// ...
public function index()
{
$results = DB::table('test_table')->paginate(10);
/** ^^^^^^^ */
return TestResource::collection($results);
}
然后在您的资源中:
资源/Test.php
class Test extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id, // <------
'test_col' => $this->test_col, // <------
];
}
}
推荐阅读
- c - 当我尝试编译 yacc 和 lex 文件时出现一些错误
- python - sqlite3.operationalError:没有这样的列:sales_id
- python-3.x - 抓取 twitter 数据中的各种特征
- javascript - 如何在 nuxt 中为每种可用语言创建动态链接?
- c++ - 如何正确初始化此指针以避免分段错误?
- javascript - 如何在 .val() jquery 函数中添加多个变量
- node.js - 在'"db": "json-server -w db.json -p 3001"'中,这里的'-w'是什么意思?
- power-automate - 带有提醒的定期电子邮件
- javascript - 使用 res.render("url", {object}) url 不会改变,但视图会改变
- php - codeigniter如何根据动态值连接第二个数据库