$data = $_POST; $data['user_id'] = 1; $data['create_at'] = date("Y-m-d H:i:s"); $data['update_at'] = date("Y-m-d H:i:s"); $data['is_enable'] = 1; $data['is_visible'] = 1; $categoryModel = new \Admin\Model\CategoryModel(); $footPosition = $categoryModel->getFootPosition(); $data['position'] = intval($footPosition) + 1; // var_dump($data); $categoryModel->add($data);
最初は位置の型が間違っているのかと思ったのですが、文字列に変換しても整数に変換しても不正なデータオブジェクトエラーが報告されました。 $data['position'] = intval($footPosition) + 1; これをコメントアウトすればデータの挿入には問題ありません。助けてください。
var_dump 後の結果は次のようになります。問題はありません。
array(7) { ["category_name"]=> string(12) "风言风语" ["user_id"]=> int(1) ["create_at"]=> string(19) "2015-04- 05 15:39:41" ["update_at"]=> string(19) "2015-04 -05 15:39:41" ["is_enable"]=> int(1) ["is_visible"]=> int(1) ["position"]=> int(2) }
データベースのフィールド位置にスペースが含まれていないことが確認されており、フィールド名は一貫しています。
$footPosition = $categoryModel->getFootPosition();
$footPosition を出力して内容を確認してください
さらに、エラーが発生した場合には、元のエラー メッセージが表示される必要があります
問題は解決しました。 ThinkPhpModel の _facade 関数に入ると、
foreach ($data as $key=>$val){ file_put_contents("xiaobin.txt", $key."\n", FILE_APPEND) ; file_put_contents("xiaobin.txt", $fields, FILE_APPEND); if(!in_array($key,$fields,true)){ if(APP_DEBUG){ E(L('_DATA_TYPE_INVALID_').':['.$key.'=>'.$val.']'); } unset($data[$key]); }elseif(is_scalar($val)) { // 字段类型检查 和 强制转换 $this->_parseType($data,$key); } }
はフィールド配列の結果が次のとおりであることを発見しました: category_iduser_idcategory_nameblog_numcreate_atupdate_atis_enableis_visiblepre_positionnext_positioncategory_idArray これらはデータベースの列名であり、そのうち pre_position と next_position は後でテーブルの構築を開始したときのフィールドです。そして位置を追加しました。キャッシュが無効になっているため、キャッシュをクリアしても役に立ちません。
最後に、このデータは Runtime/Data/_fields に保存されていることがわかりました。削除するだけです。