gpt4 book ai didi

mysql - 如何从 CakePHP 库中引用数据库

转载 作者:行者123 更新时间:2023-11-29 00:29:22 27 4
gpt4 key购买 nike

我在我的 CakePHP 2.0 应用程序中创建了一个库类文件。它是一个名为 emailManager 的 PHP 类,它存在于 CakePHP 的 libaray 文件夹内的文件夹 emailManager 中。我很想知道从这个库类引用数据库的最简单方法是什么。

我希望能够做类似$this->AppModel->query("SELECT * FROM some_table_in_my_db")这样的事情,这样我就不必在不同的地方跟踪数据库配置,但我不确定如何实现这一目标。

此外,我觉得有必要提及我正在使用的表不遵守 CakePHP 表命名约定。它们早于我们使用 CakePHP,因此我无法更改我的表以适应 CakePHP 的模型格式。这就是为什么我希望通过类似 query

的方式访问通用数据库

编辑:我构建了一个临时解决方案,但我知道可能有更好的解决方案。我的蛋糕应用程序中有一个名为 MySimpleConstuct 的模型,然后在库文件中包含了 MySimpleConstruct 模型,如下所示:

 // import this model
$this->GivenModel = ClassRegistry::init('MySimpleConstruct');
$this->GivenModel = new MySimpleConstruct();

// Then it is possible to do as followed:
$table_data = $this->GivenModel->query('SELECT * FROM like_some_table_dude' WHERE 1);

这并不理想,所以我仍在寻找更好的解决方案。任何帮助将不胜感激。

最佳答案

@John Galt,我想这不是完全相同的,但非常相似,而且该解决方案似乎非常直接地适用于您的情况。您可以考虑使用的另一种技术是在 Controller 中实例化库,而不是为其提供模型的引用。

class TestController extends AppController {
function index(){
App::uses('TheLibrary', 'Lib');
$obj = new TheLibrary();
$obj->GivenModel = &$this->GivenModel;
}
}

-编辑-然后在您编写的库中执行类似这样的操作。

class TheLibrary {
var $GivenModel = null;

function some_query(){
return $this->GivenModel->query('SELECT * FROM like_some_table_dude WHERE 1');
}
}

第一个代码片段是 Controller 实例化您的库,然后为库提供对模型的引用作为属性 GivenModel。 “&”符号使分配成为引用(参见 How does the '&' symbol in PHP affect the outcome? )。第二个代码片段是库如何使用该属性的示例。

我确实知道您正在尝试使用库中的模型,这就是您在编辑中拥有的解决方案和我建议的解决方案所做的。但是我会再次指出,这不是正确的 MVC 约定,您应该重新考虑您使用库的方式。

关于mysql - 如何从 CakePHP 库中引用数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17345932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com