从 yii2 中的模型 class 访问数据
Accessing data from the model class in yii2
在 yii2 中,我有一个使用 gii 工具构建的控制器和模型。但是,当我从控制器调用模型函数时,它会出错。
PHP Fatal Error 'yii\base\ErrorException' with message 'Class 'backend\controllers\TargetCities' not found'
in C:\xampp\htdocs\ncddp\backend\controllers\TargetCitiesController.php:15
Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleFatalError()
#1 {main}
这是我的控制器................................................
<?php
namespace backend\controllers;
class TargetCitiesController extends \yii\web\Controller
{
public function actionIndex()
{
return $this->render('index');
}
function actionGetcities()
{
$prov_code = $_POST['prov_code'];
$cities = TargetCities::model()->get_cities($prov_code);
echo $cities;
}
}
这是我的模型......
<?php
namespace app\models;
use Yii;
/**
* This is the model class for table "tbl_target_cities".
*
* @property integer $id
* @property string $city_code
* @property string $kc_classification
* @property integer $cluster
* @property integer $grouping
* @property string $priority
* @property integer $launch_year
*/
class TargetCities extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'tbl_target_cities';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['city_code', 'kc_classification', 'cluster', 'grouping', 'priority', 'launch_year'], 'required'],
[['cluster', 'grouping', 'launch_year'], 'integer'],
[['city_code'], 'string', 'max' => 20],
[['kc_classification', 'priority'], 'string', 'max' => 100],
[['city_code'], 'unique']
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'city_code' => 'City Code',
'kc_classification' => 'Kc Classification',
'cluster' => 'Cluster',
'grouping' => 'Grouping',
'priority' => 'Priority',
'launch_year' => 'Launch Year',
];
}
public function get_cities(){
$select = "SELECT * FROM lib_cities where prov_code=$prov_code";
$query = Yii::app()->db->createCommand($select)->queryAll();
return $query;
}
}
你输了use app\models\TargetCities
。因为你在 Php 中使用了命名空间。如果您没有为 TargetCities
模型 Php 设置 use ...
,则在 'backend\controllers' 命名空间中找到它 class,但找不到。像这样添加 controller
:
use app\models\TargetCities;
class TargetCitiesController extends \yii\web\Controller
{
编辑。
您使用的是 Yii1 风格,而不是 Yii2。在 Yii2 中不是方法 model()
。在控制器中正确:
function actionGetcities()
{
$prov_code = $_POST['prov_code'];
$cities = TargetCities::get_cities($prov_code);
echo $cities;
}
然后在模型 TargetCities
中将 get_cities
声明为 static
并将 Yii::app()
更改为 Yii::$app
,如下所示:
public static function get_cities(){
$select = "SELECT * FROM lib_cities where prov_code=$prov_code";
$query = Yii::$app->db->createCommand($select)->queryAll();
return $query;
}
阅读不同的 Yii2 和 Yii2 的文档 - http://www.yiiframework.com/doc-2.0/guide-intro-upgrade-from-v1.html
在 yii2 中,我有一个使用 gii 工具构建的控制器和模型。但是,当我从控制器调用模型函数时,它会出错。
PHP Fatal Error 'yii\base\ErrorException' with message 'Class 'backend\controllers\TargetCities' not found'
in C:\xampp\htdocs\ncddp\backend\controllers\TargetCitiesController.php:15
Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleFatalError()
#1 {main}
这是我的控制器................................................
<?php
namespace backend\controllers;
class TargetCitiesController extends \yii\web\Controller
{
public function actionIndex()
{
return $this->render('index');
}
function actionGetcities()
{
$prov_code = $_POST['prov_code'];
$cities = TargetCities::model()->get_cities($prov_code);
echo $cities;
}
}
这是我的模型......
<?php
namespace app\models;
use Yii;
/**
* This is the model class for table "tbl_target_cities".
*
* @property integer $id
* @property string $city_code
* @property string $kc_classification
* @property integer $cluster
* @property integer $grouping
* @property string $priority
* @property integer $launch_year
*/
class TargetCities extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'tbl_target_cities';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['city_code', 'kc_classification', 'cluster', 'grouping', 'priority', 'launch_year'], 'required'],
[['cluster', 'grouping', 'launch_year'], 'integer'],
[['city_code'], 'string', 'max' => 20],
[['kc_classification', 'priority'], 'string', 'max' => 100],
[['city_code'], 'unique']
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'city_code' => 'City Code',
'kc_classification' => 'Kc Classification',
'cluster' => 'Cluster',
'grouping' => 'Grouping',
'priority' => 'Priority',
'launch_year' => 'Launch Year',
];
}
public function get_cities(){
$select = "SELECT * FROM lib_cities where prov_code=$prov_code";
$query = Yii::app()->db->createCommand($select)->queryAll();
return $query;
}
}
你输了use app\models\TargetCities
。因为你在 Php 中使用了命名空间。如果您没有为 TargetCities
模型 Php 设置 use ...
,则在 'backend\controllers' 命名空间中找到它 class,但找不到。像这样添加 controller
:
use app\models\TargetCities;
class TargetCitiesController extends \yii\web\Controller
{
编辑。
您使用的是 Yii1 风格,而不是 Yii2。在 Yii2 中不是方法 model()
。在控制器中正确:
function actionGetcities()
{
$prov_code = $_POST['prov_code'];
$cities = TargetCities::get_cities($prov_code);
echo $cities;
}
然后在模型 TargetCities
中将 get_cities
声明为 static
并将 Yii::app()
更改为 Yii::$app
,如下所示:
public static function get_cities(){
$select = "SELECT * FROM lib_cities where prov_code=$prov_code";
$query = Yii::$app->db->createCommand($select)->queryAll();
return $query;
}
阅读不同的 Yii2 和 Yii2 的文档 - http://www.yiiframework.com/doc-2.0/guide-intro-upgrade-from-v1.html