gpt4 book ai didi

php - 在 CAKEPHP 中,我们可以动态更改链接到特定模型的表吗?

转载 作者:可可西里 更新时间:2023-11-01 13:25:10 26 4
gpt4 key购买 nike

假设我有 2 个具有相同结构的相同表(称之为“tableA”和“tableB”)。

我想将某些数据保存在表“A”中,某些数据保存在表“B”中。

现在我想对两个表使用相同的模型。

我想更改与模型(比如“ModelM”)链接的表,以根据 Controller 的条件动态更改。

例如


在 Controller 中:-//示例代码

function saveProduct(){

$this->loadModel('ModelM');

if(condition){

$this->ModelM->useTable = 'A';

}else{

$this->ModelM->useTable = 'B';

}
$this->ModelM->save($this->data);

}

2011 年 1 月 14 日添加

以下是我正在处理的代码的复制/粘贴:

function experiment(){

$tableName = 'temp_table'.'1234';

mysql_query('CREATE TABLE '.$tableName.' LIKE temp_home_masters');

$sql = $this->createInsertQuery($new_arr,$tableName);

$status = mysql_query($sql);

if($status){
echo "saved successfully";
}else{
echo "error";
}

$this->NewHomeMaster->setSource($tableName);//NewHomeMaster was previously attached to a different table , here I want to change the tableName the model linked with dynamically.Model 'NewHomeMaster' already exists and uses a table ...Here I am willing to link this model to the newly created tempory table.//

$home_details=$this->paginate('NewHomeMaster',array($new_conditions));

mysql_query('DROP table '.$tableName);

}

不幸的是,这不起作用...

最佳答案

我本来打算想办法解决你的问题,但我越想越觉得你的逻辑有问题。

我可以看出表相似或相同这一事实如何导致您决定使用单个模型与两个表进行交互。然而,当您查看模型应该是什么时(在 CakePHP 中,基本上是表的接口(interface)),来回切换没有意义。

CakePHP 文档解释了这样的模型:

In object-oriented programming a data model is an object that represents a "thing", like a car, a person, or a house.

在您的示例中,您确实有两个看起来完全相同的独立“事物”。因此,他们应该有自己的模型。

如果您的模型真的将具有完全相同的方法,那么“CakePHP 方式”将是定义自定义 Behavior封装您的共享方法。然后将行为附加到两个模型。

然后就可以在Controller条件下加载你需要的模型了:

private $DynamicModel;

public function saveProduct() {
if (condition) {
App::import('Model', 'ModelZ');
$this->DynamicModel = new ModelZ;
} else {
App::import('Model', 'ModelY');
$this->DynamicModel = new ModelY;
}
$this->DynamicModel->save($this->data);
}

关于php - 在 CAKEPHP 中,我们可以动态更改链接到特定模型的表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4681247/

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