ThinkPHP 5過濾資料表中不存在的欄位
最近在做專案的時候,為了方便資料表的新增或者更新操作,有時會重新命名資料表中欄位的名稱(這裡的重新命名只是在Model層,而不是在資料表裡),在網上查詢了一下,又看了一下ThinkPHP 5完全開發手冊,有兩種方法可以解決這個問題。
我出現的問題如下:
這裡的old_goods_attr是資料表中不存在的,但是因為程式需要新增的。
這時我的程式碼是:
public function edit()
{
if(request()->isPost()){
$data=input('post.');
$update=model('goods')->save($data);
if(!$update){
$this->success('修改商品成功!','lst');
}else{
$this->error('修改商品失敗!');
}
return;
}
解決方法有兩個:
方法一
在你的模型類定義中,設定 field 屬性為 true,如下:
class User extend Model {
protected $field = true;
}
方法二
如果需要過濾非資料表字段的資料,可以使用:
$user = new User($_POST);
// 過濾post陣列中的非資料表字段資料
$user->allowField(true)->save();
我利用方法二修改後,還是不行,會報下面的錯誤:
這是由於我的資料新增修改都用到了save()提交到資料庫,我這裡修改資料,這是隻需要修改為:
$user->allowField(true)->isUpdata(ture)->save();
這時完整的程式碼為:
public function edit()
{
if(request()->isPost()){
$data=input('post.');
$update=model('goods')->allowField(true)->isUpdate(true)->save($data);
if(!$update){
$this->success('修改商品成功!','lst');
}else{
$this->error('修改商品失敗!');
}
return;
}
轉載自:https://blog.csdn.net/qq_38148394/article/details/80247617