我在我的代码中使用了多个$this->loadModel('Model');
,我想知道以这种方式使用性能(或其他时期)更好:$this->loadModel(['Model', 'Model2']);
,我应该在哪里放置将使用哪种方法或以上?
public function edit($productId)
{
$this->loadModel('Medias');
//Code that uses the model
$this->loadModel('Stores');
$stores = $this->Stores->myStores($userId);
$this->loadModel('Banners');
//Code that uses the model
}
答案 0 :(得分:1)
Controller/ModelAwareTrait::loadModel()
没有数组,因此问题就解决了。
如果您的代码可能会在行动的某些部分之前提前有条件地返回,那么不对分组进行分组只会有意义/不同。还应注意,如果它们相关联,您可以通过魔法属性(如$this->Stores->Banners
)访问相关模型。
如果您对性能感到疑惑,那么我建议您查看源代码并检查调用该方法时实际发生的情况。
<强> https://github.com/cakephp/cakephp/blob/3.1.5/src/Datasource/ModelAwareTrait.php#L88 强>
默认情况下,该方法基本上包含对TableRegistry::get()
的调用,并将返回值设置为控制器的动态属性。最终调用最终会在TableLocator::get()
中进行,其中一些变形,注册表查找等正在进行,没有什么会对性能产生重大影响。
如果您想了解具体影响,请抓住自己的分析工具(例如Xdebug),并进行衡量。