【发布时间】:2021-02-04 06:52:16
【问题描述】:
我的问题是关于向数据库发送查询时收到的 JSON 格式。 我想要的输出:
[{"errors":[{"something":"something"}],"created_at":"2020-10-20 10:10:10","name":"something","id":99}]
我明白了:
[{"id":99,"name":"something","device_results":[{"devices_id":99,"created_at":"2020-10-20 10:10:10","errors":[{"something":"something"}]}]}]
我得到的:
public function errors()
{
$errors = DB::table('devices')
->join('device_results', 'devices.id', '=', 'device_results.devices_id')
->select('errors', 'created_at', 'name', 'device_results.id')
->orderBy('created_at', 'desc')
->whereJsonLength('errors', '>', 0)
->get();
return $errors;
}
我希望使用我的模型获得相同的结果,因为如果我这样做:
public function errors()
{
$devices = Devices::with(['device_results' => function($query) {
$query->select('device_results.devices_id','created_at','errors')
->whereJsonLength('errors', '>', 0)
->orderBy('created_at', 'desc')
->get();
}])->get();
return $devices;
}
它总是采用这种格式,还是我可以使用模型并获得与 DB 类相同的格式?我在前端使用 Vue,希望避免嵌套。
谢谢
【问题讨论】:
-
如果你使用带关系的模型,结果总是嵌套的。每个关系都将作为单独的对象或集合加载。