hit*_*han 9 cakephp cakephp-3.0
在CakePHP2.x中,我经常$uses在控制器中使用属性,但似乎CakePHP 3.0中不再提供此属性.
我知道加载非默认模型的唯一方法是使用loadModel()方法.这是推荐的加载模型的方法吗?或者还有其他方法来加载模型吗?
ndm*_*ndm 16
您的观察结果是正确的,没有$uses属性,相反,模型/表格与控制器(ex PostsTablefor PostsController)不匹配且无法通过关联获得,必须明确加载.
这可以通过使用任何一个来完成
Controller::loadModel() 它将实例作为属性添加到控制器. TableRegistry::get()只返回实例.TableLocator::get(),通过检索定位器TableRegistry::locator()(TableRegistry::getTableLocator()从CakePHP 3.5.0开始)或通过LocatorAwareTrait::tableLocator()(LocatorAwareTrait::getTableLocator()从CakePHP 3.5.0开始),但通常不需要在控制器中.所以这对你的问题是肯定的Controller::loadModel(),即
$this->loadModel('Name');
Run Code Online (Sandbox Code Playgroud)
是一种将模型/表实例作为属性添加到控制器的可行方法,至少在默认配置中,它实际上是以下的简写:
$this->Name = TableRegistry::get('Name');
Run Code Online (Sandbox Code Playgroud)
但更多loadModel()是抽象的,并支持非表存储库.