0

例如,我想要从 3 个模型到MyModel4 的数据。

$model1data = MyModel1::getList();
$model2data = MyModel2::getList();
$model3data = MyModel3::getList();

获取这些数据的目的是根据上述模型数据准备我的创建视图、编辑视图和显示视图。

现在我面临的问题是我可以使用MyModel1::getList(); 并将其传递给我的控制器的 create 方法。我想要用于控制器的显示和编辑方法的相同数据。为此,我必须使用MyModel1::getList();获取数据。. 我想优化我的代码以减少与数据库的交互/减少冗余处理。

那么有没有更短的方法可以让我在我的控制器或模型中编写它来获取这些数据一次并多次使用它而无需从另一个模型重复获取数据?

我尝试在模型中定义单独的方法,但无法使用变量进行访问。

public static function getRequiredData()
{
    $model1data = MyModel1::getList();
    $model2data = MyModel2::getList();
    $model3data = MyModel3::getList();
}

public static function prepareCreate()
{
    return (object)array("model1" => PublishPlan::getRequiredData().$model1data, "viewModes" => ViewMode::getList(), "planSchemes" => PlanSchemes::getList());
}

在上述方法(prepareCreate)中访问$model1data时出现错误。

4

1 回答 1

0

我认为您应该为您的问题使用构造函数。

public function __construct()
{
    $model1data = MyModel1::getList();
    $model2data = MyModel2::getList();
    $model3data = MyModel3::getList();
}

使用构造函数,您可以访问同一控制器的所有方法中的列表。

但如果要在所有控制器中访问同一个列表,则应在 Model1、Model2 和 Model3 中定义一个静态变量。

于 2021-02-09T08:18:11.487 回答