ホームページ >バックエンド開発 >PHPチュートリアル >thinkphp5のbelongsToMany()モジュール名の命名問題を解決する

thinkphp5のbelongsToMany()モジュール名の命名問題を解決する

不言
不言オリジナル
2018-08-10 17:26:045347ブラウズ

この記事の内容は、thinkphp5 でのbelongsToMany() モジュール名の命名問題の解決に関するもので、一定の参考値を持っていますので、困っている友人は参考にしていただければ幸いです。

最近、TP5 を使用して CRM バックエンド管理システムを開発しているときに問題が発生しました。関連クエリ (多対多) を使用するときに、belongsToMany 関数が使用されて、モデルが存在しないことを示すプロンプトが表示されます。具体的な問題を見てみましょう。

機能紹介

thinkphp5のbelongsToMany()モジュール名の命名問題を解決する

プロジェクトでの私の使い方
thinkphp5のbelongsToMany()モジュール名の命名問題を解決する
TP5 Layerでモデルを見てみましょう
thinkphp5のbelongsToMany()モジュール名の命名問題を解決する
f_role は関連付けモデルです
ref_user_role は中間テーブルです (多対多の関係には中間テーブルが必要です)
role_id 外部キー名
user_id は主キーですf_userの

この書き方は完全にマニュアルに従って書いていますが、理論上は全く問題ありませんが、実行するとエラーが報告されます。 FUser モジュールは存在しませんが、モジュール名は f_user であるという命名方法です。
モジュール名の命名規則に問題があることが原因です。 thinkphp5のbelongsToMany()モジュール名の命名問題を解決する
解決策

短いデバッグの後、問題の原因が見つかりました:

thinkphp/think/model.php

のbelongsToMany メソッドの parseModel メソッドを変更する必要があります。



thinkphp5のbelongsToMany()モジュール名の命名問題を解決する
thinkphp5のbelongsToMany()モジュール名の命名問題を解決する
図の 1 を 0 に変更するだけです。その理由は、下の図のとおりです。thinkphp5のbelongsToMany()モジュール名の命名問題を解決する

単に変更するだけです。命名スタイル
thinkphp5のbelongsToMany()モジュール名の命名問題を解決する最後に命名スタイルを変更して、テストを実行します。

データを取得します (関連データも正常に取得できます)。
thinkphp5のbelongsToMany()モジュール名の命名問題を解決する

以上がthinkphp5のbelongsToMany()モジュール名の命名問題を解決するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。