php - 更新方法在 Codeigniter 4 中不起作用
问题描述
我有一个包含一些网站配置的表。它的模型类如:
<?php
namespace App\Models;
use CodeIgniter\Model;
class WebsiteConfig extends Model
{
protected $table = 'website_config';
protected $id = 'id';
protected $allowedFields = [
'config_name', 'config_value', 'updated_date'
];
}
表格看起来: 表格截图
我想更新这张桌子上的“标题”。codeigniter 4 文档显示:
$data = [
'title' => $title,
'name' => $name,
'date' => $date,
];
$builder->where('id', $id);
$builder->update($data);
但是,当我使用这种用法时,会发生错误。我的代码:
class Home extends BaseController
{
public function index()
{
$websiteConfig = new WebsiteConfig();
try {
$websiteConfig
->where('config_name', 'title')
->update('test');
} catch (\ReflectionException $e) {
}
exit;
}
}
和错误: 错误截图
当我使用带有 set('config_value','test') 函数的更新方法时,代码可以正常工作。但我想按照文档所示进行更新。我能做些什么?感谢您的帮助。
解决方案
从文档中:
更新()
更新数据库中的现有记录。第一个参数是要更新的记录的 $primaryKey。一个关联的数据数组作为第二个参数传递到此方法中。数组的键必须与 $table 中的列名匹配...
这意味着调用...->update('test')
会将字符串视为'test'
主键,并且没有要更新的数据。
如果要基于另一个字段(不是主键)进行更新,则必须使用set()
then update()
(不带任何参数)。
此外,set()
必须使用关联数组(字段 => 值对)或单独的键和值参数调用。
推荐阅读
- android - Android MediPlayer prepareAsync() java.lang.IllegalStateException
- javascript - SQL 滞后与 jquery 变量
- javascript - VUEJS - 将我的方法的返回绑定到我的子模板
- javascript - 从当前帖子自定义字段中提取简码并在 Wordpress 中执行
- swiftui - 如何直接从 SwiftUI 中的 Widget 打开 Safari?
- java - 如何有效地使用 CompletableFuture 映射每个输入的异步任务
- spring-boot - Spring Boot + Thymeleaf:组合过滤和分页列表
- mysql - 如何修复 InnoDB 损坏的数据结构?
- android - 当数据按模型类在回收站视图中获取 firebase 数据库时,错误应用程序崩溃
- c# - C#/Unity Time.deltaTime 使相机跟随跳跃