在查询数据库时只能出来最后一条,x轴只能出现最后一条,想让x轴,y轴全部输出
<?php
namespace App\Model\model;
use DB;
class modelData{
public function change($type, $data) {
$data = DB::query("SELECT * FROM instruments_tuokong");
$dataSets = [
["X_data" => ["TK5-01","TK5-02","TK5-03","TK5-04","TK5-05"]],
["X_data" => ["TK5-06","TK5-07","TK5-08","TK5-09","TK5-10"]],
["X_data" => ["TK5-11","TK5-12","TK5-13","TK5-14"]],
["X_data" => ["TK5-15","TK5-16"]],
["X_data" => ["TK5-17","TK5-18"]],
["X_data" => ["TK5-19"]]
]; //X轴数据
foreach ($dataSets as $key => $dataSet) {
$X_data = $dataSet["X_data"];
foreach ($dataSets as $k => $value) {
$result = DB::table('instruments_tuokong')->select('cumulative')->orderBy('create_time', 'desc')->where('code', $value)->first();
$Y_data[$key][] = $result->cumulative;
}
}
var_dump($X_data,$Y_data);//在这里打断点
return [$X_data,$Y_data];
}
}
?>
namespace App\Model\model;
use DB;
class modelData{
public function change($type, $data) {
$dataSets = [
["X_data" => ["TK5-01","TK5-02","TK5-03","TK5-04","TK5-05"]],
["X_data" => ["TK5-06","TK5-07","TK5-08","TK5-09","TK5-10"]],
["X_data" => ["TK5-11","TK5-12","TK5-13","TK5-14"]],
["X_data" => ["TK5-15","TK5-16"]],
["X_data" => ["TK5-17","TK5-18"]],
["X_data" => ["TK5-19"]]
]; //X轴数据
$Y_data = [];
foreach ($dataSets as $key => $dataSet) {
$X_data = $dataSet["X_data"];
foreach ($X_data as $code) {
$result = DB::table('instruments_tuokong')
->select('cumulative')
->orderBy('create_time', 'desc')
->where('code', $code)
->first();
$Y_data[$key][] = $result->cumulative ?? 0;
}
}
var_dump($data, $X_data, $Y_data);
return [$X_data, $Y_data];
}
}
这段代码有几个问题:
1. `change` 方法的第二个参数 `$data` 实际上没有被使用到,而在方法内部又定义了一个 `$data` 变量进行数据库查询。
2. `DB::query` 方法查询的表名是固定的 `"SELECT * FROM instruments_tuokong"` ,而 `orderBy` 和 `where` 方法传入的 `$value` 变量是没有被定义的,应该改为 `$value['X_data'][0]` 来获取到 X 轴对应的值。
3. 在 `foreach ($dataSets as $k => $value) {` 循环内部,使用 `$value` 做为查询条件时应该将 `$value` 改为 `$value['X_data'][0]` 。
修正后的代码如下
```:
```java
namespace App\Model\model;
use DB;
class modelData
{
public function change($type, $data)
{
$dataSets = [
["X_data" => ["TK5-01","TK5-02","TK5-03","TK5-04","TK5-05"]],
["X_data" => ["TK5-06","TK5-07","TK5-08","TK5-09","TK5-10"]],
["X_data" => ["TK5-11","TK5-12","TK5-13","TK5-14"]],
["X_data" => ["TK5-15","TK5-16"]],
["X_data" => ["TK5-17","TK5-18"]],
["X_data" => ["TK5-19"]]
]; //X轴数据
$Y_data = [];
foreach ($dataSets as $key => $dataSet) {
$X_data = $dataSet["X_data"];
foreach ($dataSets as $k => $value) {
$result = DB::table('instruments_tuokong')
->select('cumulative')
->orderBy('create_time', 'desc')
->where('code', $value['X_data'][0])
->first();
$Y_data[$key][] = $result->cumulative;
}
}
var_dump($X_data, $Y_data); //在这里打断点
return [$X_data, $Y_data];
}
}
希望这可以帮助您解决问题。