Yii2 在控制器中获取模型


yii2 get model in controller

我有一个yii2项目和控制器MyModelController.php在那里,我想在那里获得模型

namespace app'controllers;
use yii'web'Controller;
use yii'db'Command;
class MyModelController extends Controller
{
    public function actionPhoto()
    {
        $model=new myModel;
        return $this->render('photo', ['model' => $model]);
    }
}

和型号

MyModel.php:
    use namespace app'models;
    use yii'base'Model;
    class MyModel extends ActiveRecord
    {
        public static function model($className=__CLASS__)
        {
            return parent::model($className);
        }
        public function tableName()
        {
            return 'my_model';
        }
        public function rules()
        {
            ... some rules
        }
        public function relations()
        {
            return array(
            );
        }
        //like fields in my table in mysql
        public function attributeLabels()
        {
            return array(
                'id' => 'ID',
                'my_model_atribute' => 'MyModel',
            );
        }
        public function search()
        {
            ... some search
        }
    }

它们分别处于/basic/models/basic/controllers

当我在我看来它时,我得到了这个错误:

Class 'app'controllers'MyModel' not found

UPD1我试图让它出现在photo.php

use yii'helpers'Html;
$model=new MyModel;
var_dump($model);

而且我仍然错误地认为找不到类。UPD2我将命名空间更改为 basic'models 并按实际情况public_html'basic'models,但它仍然在那里找不到类/

您必须先使用模型。

use yii'helpers'Html;
use basic'models'Mymodel
$model=new MyModel;
var_dump($model);

use yii'helpers'Html;
$model=new 'basic'models'MyModel;
var_dump($model);
    namespace basic'controllers;
    use yii'web'Controller;
    use yii'db'Command;
    class MyModelController extends Controller
    {
        public function actionPhoto()
        {
            $model=new myModel;
            return $this->render('photo', ['model' => $model]);
        }
   }

我的模型.php: 使用命名空间基本''模型;

use yii'base'Model;
class Model extends ActiveRecord
{
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }
    public function tableName()
    {
        return 'my_model';
    }
    public function rules()
    {
        ... some rules
    }
    public function relations()
    {
        return array(
        );
    }
    //like fields in my table in mysql
    public function attributeLabels()
    {
        return array(
            'id' => 'ID',
            'my_model_atribute' => 'MyModel',
        );
    }
    public function search()
    {
       ... some search
    }
}

如果你的代码是

app'controllers'MyModel

因为你的模型(MyModel)在文件夹/models/MyModel上.php并且带有命名空间app''models

所以你必须打电话给

use app'models'MyModel;

并声明它

$model = new MyModel();

喜欢这个

    namespace app'controllers;
    use yii'web'Controller;
    use yii'db'Command;
    // this to call your models with namespace
    use app'models'MyModel;
    class MyModelController extends Controller
    {
        public function actionPhoto()
        {
            // this to declare your model
            $model = new myModel();
            return $this->render('photo', ['model' => $model]);
        }
   }