ホームページ > バックエンド開発 > PHPチュートリアル > Thinkphp_PHP チュートリアルの Create メソッドの詳細な学習

Thinkphp_PHP チュートリアルの Create メソッドの詳細な学習

WBOY
リリース: 2016-07-13 10:24:40
オリジナル
740 人が閲覧しました

仕事上の理由により、thinkPHP の create() メソッドで問題が発生したため、create() メソッドをさらに調査するために create() を追跡しました。
create() メソッドには 2 つのパラメーターがあることがわかりました最初のパラメーターはよく知られているデータ パラメーター 2 番目のパラメーターは隠し $type パラメーター、では、このパラメーターは何を制御するために使用されるのでしょうか? // Status $type = $type?$type!empty($data[$this->getPk()])?self::MODEL_UPDATE:self::MODEL_INSERT);
この文をよく考えてみたところ、 out、
この隠しパラメータは、このデータベースの特定の操作を示すために使用されます デフォルトでは、このパラメータに値を割り当てる必要はありません。システムが自動的に識別します
これが識別される方法です:

渡したデータに主キーと同じフィールドがある場合、このデータベース操作はデフォルトで更新操作になります。これは主に、ほとんどの場合、主キーがデフォルトで自動インクリメントされ、挿入操作が一般的に行われるためです。主キーに値を割り当てませんが、問題はここにあります

私が最近取り組んだプロジェクトでは、学生番号を主キーとして直接使用していましたが、学生番号は自動インクリメントできず、固定形式で入力する必要がありました。

しかし、システムは私の入力操作を自動的に更新操作として認識しました。そして私の自動補完 コードは次のように書かれています:


コードをコピーします コードは次のとおりです: protected $_auto = array(
array('majorid','maxmajoridadd1',1,'callback' ),
);

マニュアルを確認すると、3番目のパラメータ1は、挿入時にこの自動補完動作が実行されることを意味していることがわかります。
システムは私の挿入操作を更新操作とみなしたため、設定したオートコンプリートコードは当然無効になり、実行されませんでした

主キーフィールドの値も入力する必要がある場合は、次のように記述できます

コードをコピーします コードは次のとおりです:create($_POST,1)
この操作が挿入操作であることを create メソッドに直接伝えます

これは見つけるのが非常に難しい問題です。最近、多くの人がこの問題に遭遇していることがわかったので、それを説明する記事を書きました。

また、自動検証/オートコンプリート機能が失敗する場合は、Model クラス名が間違って記述されている可能性があります。これは、複数の文字や文字が欠けている場合によく発生します。

基本的に、自動検証/自動完了が失敗する状況は次の 2 つです


http://www.bkjia.com/PHPjc/825363.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/825363.html技術記事仕事上の理由により、thinkPHP の create() メソッドで問題が発生したため、create() メソッドをさらに調査するために create() を追跡しました。 create() メソッドには 2 つのパラメータがあることがわかりました...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート