你能解释一下yii中模型和控制器之间的最终关系吗


Can you explain the ultimate relationship between model and controller in yii?

我是MVC模式的新手。我在谷歌上搜索,剪下代码,玩很多代码。但仍然对控制器和模型之间的最终关系感到困惑。在MVC之前,我的编程风格是这样的。

class Users extend Database{
function __construct(){}
 public $id,$name;
 public function Save(){
   $this->Execute("[Built query using the two member variables]");
 }
}

我曾经在HTML中使用这个类作为

$user = new User();
$user->id= "u1";
$user->name = "sarah";
$user->Save();

那么,我该如何将我过去的理解与yii模型控制器的事情绑定起来呢?

我的困惑:

1( 当我用命令为表创建模型时,我没有在模型中为表的每一列找到任何属性定义。相反,在控制器中,这条线是$model->attributes = $_POST['Message'],这到底是什么?

Isn't it better this way:
$model->message = "hi";
$model->date ="10-10-2011";
$model->save();

很好地理解单线

$model->attributes = $_POST['Message'];

我们必须研究模型类。在模型类(扩展CActiveRecord,通常由gii自动生成(中,我们有两个重要函数,attributeLabels和rules。

attributeLabels列出了所有模型属性(或变量,或我们希望存储在数据库中的列,或简单地列出属性(。

在规则函数中,我们为每个变量/列/属性设置了所有规则。在自动生成的形式中,这些规则直接反映了我们的数据库结构,在某些情况下,我们没有规则,所以只写了一行

array('name', 'safe'),

此规则表示不应用任何规则,将变量保存到数据库中是safa操作。

现在,当我们在控制器中(或任何地方(有$_POST["消息"]时,我们应用单行

$model->attributes = $_POST['Message'];

我们所有发布的值都应用于$model,即我们不需要经过每个属性/属性的验证和分配,只需要经过单行

$model->save();

所有内容都会在验证后保存到数据库中。这就是使用Model(本例中为CActiveRecord(的美妙之处。

$user = new User();
$user->id= "u1";
$user->name = "sarah";
$user->Save();

现在,您应该在控制器操作中编写代码,并且这个

<span><?php echo $user->name ?></span>

是你的观点。

这就是Active Record的用途,你有什么,是模型的逻辑,没有应该放在控制器中的逻辑,阅读关于活动记录模式