0

我是一个 Yii 新手,试图了解如何处理这种特殊情况。

如果我有 2 个模型,

第一个模型包含与模型有关的日期和其他信息。第二个模型包含与第二个模型有关的日期和信息。

我想在输入日期的地方进行搜索 - 从那里提取并显示给定日期的第一个和第二个模型的信息。

在 Yii 中构建这个的正确方法是什么?

我可以向其中一个控制器添加一个动作吗?这似乎有些武断,因为除了日期之外,两个模型都没有真正与另一个模型相关联。

还是我只是创建一个没有相关模型的控制器?

感谢您的反馈,因为我正在尝试理解 Yii 背后的想法。

我知道有一个博客示例,但在这种情况下,“帖子”模型似乎是“主要”元素,并且会为相关“帖子”拉出并显示“评论”。但在我的情况下,我很好奇它是如何理想地结构的,这两个模型实际上并没有那种依赖关系,而是它们唯一的联系是日期。

谢谢你。

4

2 回答 2

0

首先,正确定义表/模型中的关系。

您的控制器代码将稍作更改以处理这两个模型。

$model1= new ModelOne;
$model2= new ModelTwo;

进行处理,加载模型数据/设置属性等。

将两个模型实例都传递给查看。

$this->render('view',array(
    'model1'=>$model1,
    'model2'=>$model2,
    ));

在视图中,您可以定义从两个模型呈现数据的字段/网格等。您必须定义/指定哪些关联与哪些字段。

于 2013-10-03T07:28:52.980 回答
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 的类的记录。

于 2013-10-04T12:43:52.307 回答