我是一名Yii新手,正试图了解如何处理这种特殊情况。
如果我有2个型号,
第一个模型包含与模型有关的日期和其他信息。 第二个模型包含与第二个模型有关的日期和信息。
我希望在我输入日期时进行搜索 - 从那里拉出第一个和第二个模型的信息并显示给定日期。
在Yii中构建这个的正确方法是什么?
我是否只需向其中一个控制器添加动作?这似乎有点随意,因为除了日期之外,这两种模型都没有真正与另一种模型相连。
或者我只是创建一个没有相关模型的控制器?
我很感激您的反馈,因为我想了解Yii背后的想法。
我知道有一个博客示例,但在这种情况下,似乎“post”模型是“main”元素,并且“comments”将被拉出并显示给相关的“post”。但在我的情况下,我很好奇它是如何理想的结构,2个模型并没有真正具有那种依赖性,而是它们唯一的连接是日期。
谢谢。
答案 0 :(得分:0)
首先,正确定义表/模型中的关系。
您的控制器代码会稍微改变以处理两个模型。
$model1= new ModelOne;
$model2= new ModelTwo;
进行处理,加载模型数据/设置属性等。
将两个模型实例传递给视图。
$this->render('view',array(
'model1'=>$model1,
'model2'=>$model2,
));
在视图中,您可以定义从两个模型渲染数据的字段/网格等。您必须定义/指定哪些字段的关联。
答案 1 :(得分:0)
Yii是MVC模式。这意味着代码的一部分保留在M(模型)上,另一部分保留在V(视图)中,另一部分保留在(C)控制器中。您可以在protected / models中找到所有模型,在protected / views中查找所有视图等等。
控制器将使用模型渲染视图。模型是您发送给视图的所有数据。模型可以是变量,记录,整个结果集。在控制器中,您可以进行所需的所有查询,然后将结果放入视图中。
这很容易。
Or do I just create a controller with no related model?
任何控制器都有相关型号。也许你可能会混淆读取作为控制器的StuffController和作为模型的Stuff。这只意味着Stuff模型旨在使用stuff表。这也意味着控制器有许多与Stuff内容一起使用的动作。
所有适用于post的操作都可以在PostController中进行。所有适用于日历的操作都可以放在CalendarController中。但模型和控制器在逻辑上是分开的。
所以,......一个例子
class DogController extends Controller {
public function actionBark() {
$this->render('theView', array(
'varName' => 333
));
}
}
在Yii的MVC中,这意味着: - 控制器:是DogController - actionBark是一个关于狗的行动 - 型号:型号为'333' - 视图:视图是protected / views / dog / theView.php文件,其中模型是$ varName,它等于333.模型是数据,不一定是扩展CActiveRecord或CModel的类的记录。 / p>