有人实现过多表插入数据吗?
if(Yii::$app->request->isPost){
if(Yii::$app->request->post('Test') && $this->Test->load(Yii::$app->request->post()) && $this->Test->save($data)){
// var_dump($this->Dish->save());exit; 始终 是false
if(Yii::$app->request->post('Dish') && $this->Dish->save()){
return $this->render('index',[
'test' => $this->Test,
'dish' => $this->Dish,
]);
}else{
var_dump($dish); // 接受的是有值的
var_dump($this->Dish->getErrors()); // 接受的是空值
}
}else{
var_dump($this->Test->getErrors());
}
}else{
return $this->render('index',[
'test' => $this->Test,
'dish' => $this->Dish,
]);
}这样是不行的吗?
有人实现过多表插入数据吗?
if(Yii::$app->request->isPost){
if(Yii::$app->request->post('Test') && $this->Test->load(Yii::$app->request->post()) && $this->Test->save($data)){
// var_dump($this->Dish->save());exit; 始终 是false
if(Yii::$app->request->post('Dish') && $this->Dish->save()){
return $this->render('index',[
'test' => $this->Test,
'dish' => $this->Dish,
]);
}else{
var_dump($dish); // 接受的是有值的
var_dump($this->Dish->getErrors()); // 接受的是空值
}
}else{
var_dump($this->Test->getErrors());
}
}else{
return $this->render('index',[
'test' => $this->Test,
'dish' => $this->Dish,
]);
}这样是不行的吗?
这样肯定不行。
关键是这个地方:$this->Test->load(Yii::$app->request->post())
你的一个post过来的form只可能对应一种model,不可能一个form对应好几个不同的model,所以你既然用Test这个model load了所有post的内容,不能再用Dish去再load一遍。
如果你的form里混杂了来自于两个不同model的字段,那么你还是需要指定一个为主model,在这个主model里增加一些虚拟的属性,在load后临时存放一下,然后new一个model出来,把这些临时存放的属性值放到新model里去,然后save
用事务吧!
post过来的数据要根据模型区分
如:
post:{
'Test' : {
'id' : 1,
'name' : 'kama'
},
'Dish' : {
'did' : 1,
'dname' : 'abc'
}}
开启事务 :
$data = Yii::$app->request->post();
if(!empty($data['Test']) && !empty($data['Dish']))
{
$transaction = \Yii::$app->db->beginTransaction();
try {
$Test = new Test();
$Test->load($data);
if($Test->save())
{
#save Dish
$transaction->commit();
} else {
$transaction->rollback();
}
} catch(Exception $e) {
# 回滚事务
$transaction->rollback();
}}
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号