【问题标题】:mvc pattern: two models and one view, where is better create function?mvc 模式:两个模型一个视图,哪里更好的创建函数?
【发布时间】:2015-06-15 13:51:28
【问题描述】:

我无法决定哪个模型应该有方法。那么让我们看看下面的代码:

class Model1 {
    $value;
}

class Model2 {

}

我从控制器“属于”Model2 渲染视图。创建此视图通常是为了显示来自 Model2 的属性,以及视图的次要目标 - 显示来自多个 Model1 的 $value。在 Model1 或 Model2 中哪里更好地创建此函数。

function getValues($model2Id)
{
     return (array) Model1::find()->where('Model2id' = $model2Id)
}

如果我在 Model2 中创建它,函数将不接受任何参数。如果我在 Model1 中创建函数将是静态的。 UPD 我也需要像那个函数一样使用,但是来自Model3。 where('model3Id' = $model3Id) 只有一个区别。

【问题讨论】:

  • 也许使用一个特质。你可以把它们放在你想要的任何班级。
  • 特质?你什么意思?
  • Trait 类似于类方法,除了独立于任何类。可以在需要的地方插入。
  • 你有没有研究过使用 Yii2 的行为? yiiframework.com/doc-2.0/guide-concept-behaviors.html 这里还有一个与特征的比较:yiiframework.com/doc-2.0/…
  • Model2 或 Model1 中的函数在实现上会有所不同。 Model2知道它的id,可以直接使用$this->id

标签: php yii yii2


【解决方案1】:

您的描述类似于结构主/细节,其中主模型的实例与模型细节的多个实例相关。在这些情况下,函数通常放置在主模型中。

【讨论】:

  • 很好的答案,但如果您添加一些与原始问题相关的示例以为发布者提供实用指导会更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多