PHP查询数据库只出现一条数据

在查询数据库时只能出来最后一条,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];
    }
}

希望这可以帮助您解决问题。