PHPmodel层传输数据到控制层

想问一下 我要在控制层怎么写才能在控制层里查询到我在model层写的数据
这是model层的代码 不会写控制器中的

<?php
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)->first();
        $Y_data[$key][] = $result->cumulative; 

    }

}    
//var_dump($X_data,$Y_data);
        return [$X_data,$Y_data]; 

$instruments = ['TK5-01', 'TK5-02', 'TK5-03', 'TK5-04', 'TK5-05', 'TK5-06', 'TK5-07', 'TK5-08', 'TK5-09', 'TK5-10', 'TK5-11', 'TK5-12', 'TK5-13', 'TK5-14', 'TK5-15', 'TK5-16', 'TK5-17', 'TK5-18', 'TK5-19'];
$numbers = [1, 2, 3, 4, 5, 6];
$data = [];
foreach ($instruments as $instrument) {
    $instrumentData = [];
    foreach ($numbers as $number) {
        $result = DB::table('instruments_tuokong')->select('variation')->where('code', '=', $instrument)->whereIn('number', [$number])->get();
        
        $instrumentData[] = $result[0]->variation;
    }
    $data[] = $instrumentData;
}
        return [$data];

    }
   

}

总共要查询两次

该回答引用ChatGPT4与博主@晓码自在合作编写:

在控制层(Controller)中,你可以像下面这样查询Model层的数据:

php
namespace App\Http\Controllers;

use App\Model\modelData;

class DataController extends Controller
{
    public function index()
    {
        $modelData = new modelData();
        
        // 第一次查询
        $result1 = $modelData->change('type1', 'data1');
        $X_data = $result1[0];
        $Y_data = $result1[1];
        
        // 第二次查询
        $result2 = $modelData->change('type2', 'data2');
        $data = $result2[0];
        
        // 在控制层使用查询到的数据
        // ...
    }
}

根据Model层modelData类的change方法,我们知道它会进行两次数据库查询,返回两组数据:

第一次查询返回 $X_data 和 $Y_data 数组;

第二次查询返回 $data 二维数组。

所以在Controller中,我们实例化modelData类,调用它的change方法进行查询,获取返回的数据,然后就可以在控制层使用这些数据了。

在控制层查询Model层的数据,主要就是:

  1. 实例化Model层的模型类,如这里的modelData
  2. 调用模型类的方法进行查询,如这里的change方法
  3. 获取方法的返回数据
  4. 使用获取到的数据

Model层进行数据查询和处理,将结果返回给控制层,控制层再使用这些数据,这就是MVC的工作模式。