今日、thinkphp6 モデルを使用しているときに問題が発生しました。つまり、データの作成時にモデルが ID を返さなかったのです。これは私を非常に混亂させます。なぜなら、私の以前の開発経験では、後続の操作のためのデータを作成するときに通常 ID が返されるからです。この投稿では、この問題の原因をどのように発見し、それを修正する方法を共有します。
まず、コードをチェックして、モデル作成メソッドが正しく使用されていることを確認(rèn)しました。私のコードは次のとおりです。
$user = new User(); $user->name = 'John'; $user->email = 'john@example.com'; $user->save(); return $user->id;
このコードは、モデルの save() メソッドを呼び出し、新しく作成されたデータ行の ID を返すため、問題なく見えるはずです。ただし、コードを?qū)g行すると、返される ID は期待していたものではなく、0 であることがわかりました。私は長い間 thinkphp フレームワークを使用してきましたが、この問題が発生したことがないため、これには非常に混亂しています。
次に、モデルのソース コード、特に save() メソッドの実裝を調(diào)べました。モデルの save() メソッドは、保存する前に create() メソッドを呼び出して新しいデータ行を作成することによって実裝されていることがわかりました。
public function save($data = [], $where = [], $sequence = null) { if ($this->isExists()) { return $this->update($data, $where, $sequence); } else { $result = $this->create($data); if ($result) { $this->sync($result); } return $result; } }
データが作成されるときに、モデルが create( ) 方法。次に、create() メソッドの実裝をチェックして、新しく作成されたデータ行の ID が正しく返されるかどうかを確認(rèn)します。
public function create($data = [], $sequence = null) { if (empty($data)) { $data = $this->getOriginData(); } $result = $this->db()->insertGetId($data, $sequence); if (!empty($result)) { $this->exists(true); $this->setRawData([], true); $this->sync($result); $this->trigger('after_create'); return $result; } else { return false; } }
create() メソッドのコードを注意深く観察すると、新しく作成されたデータ行の ID が返されることがわかりました。だから問題は何ですか?
最後に、データベースのテーブル構(gòu)造を確認(rèn)し、テーブルの ID フィールドが自動インクリメント列として正しく設(shè)定されているかどうかを確認(rèn)しました。その結(jié)果、問題はここにあることがわかりました。ID フィールドが自動インクリメント列として設(shè)定されていません。
この質(zhì)問はばかばかしいと同時に恥ずかしいものですが、理由は非常に単純です。ただし、これは、モデルを使用するときにデータベース テーブルの構(gòu)造を注意深くチェックして、正しく構(gòu)成されていることを確認(rèn)する必要があるという事実も示しています。この方法によってのみ、モデルを正しく使用し、不要な問題を回避することができます。
私の場合、ID フィールドを自動インクリメント列に設(shè)定し、コードを再実行して、新しく作成されたデータ行の ID を正しく返しました。この問題が解決された後、データ作成時に返される ID 値がデータベースの自動インクリメント列機能に基づいていることに気付きました。
この投稿では、小さな問題をどのように発見したかについての私の経験を共有します。この問題の根本的な原因は、データベースのテーブル構(gòu)造が正しく構(gòu)成されていないため、データの作成時にモデルが ID を返さないことです。コードを注意深くチェックし、モデルのソース コードを確認(rèn)し、データベースのテーブル構(gòu)造を確認(rèn)することで、最終的に問題を解決しました。私の経験が、他の開発者が thinkphp6 フレームワーク モデルをより深く理解し、この強力なツールを Web アプリケーション開発にうまく活用できるようになることを願っています。
以上がthinkphp6 モデルが ID を返さないの詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)