この記事では、Laravel モデル間のリレーションシップのサブテーブルの設定に関する関連情報を、サンプル コードを通じて詳細に紹介します。この記事は、学習や仕事に必要な学習に役立ちます。以下、一緒に学びましょう。
Eloquentとは
EloquentはORMで、正式名はObject Relational Mappingで、「オブジェクト・リレーショナル・マッピング」と訳されます(データベース抽象化層、配列ライブラリ抽象化層とだけ考えると、過小評価されすぎます)。いわゆる「オブジェクト」は、この記事で「モデル」と呼ばれるものであり、オブジェクト関係マッピングはモデル間の関係です。中国語ドキュメント: http://laravel-china.org/docs/eloquent#relationships
Quote
実際の開発では、例えばユーザーテーブルをサブデータベースとテーブルに分けて使用することが多いです。たとえば、Laravel の Model クラスには次のような setTable メソッドが用意されています。次に、データ テーブルを追加、削除、変更、クエリするには、次の操作を行う必要があります。まず新しいモデル インスタンスを作成してから、テーブル名を設定します。例:
/** * Set the table associated with the model. * * @param string $table * @return $this */ public function setTable($table) { $this->table = $table; return $this; }
これは非常に簡単なので、HasOne、HasMany などのモデル間の関係がこのメソッドを使用する場合、サブテーブルをどのように設定するか?
ずっと探していたのですが、良い方法が見つかりませんでした。HasOneを例にして、ModelクラスのHasOne関数の実装メソッドを見てみましたが、テーブル名を設定する場所がありません。 , そのため、HasOne メソッドをコピーして変更する必要があります。たとえば、これを myHasOne に変更し、$table パラメーターを追加してテーブル名を設定し、オブジェクトがインスタンス化された後に setTable を呼び出すと、期待どおりに機能します。
コードは次のとおりです:(new Circle())->setTable("t_group_" . hashID($userid, 20)) ->newQuery() ->where('group_id', $request->group_id) ->update($attributes);
もっとエレガントな方法があるかどうかはわかりません。
関連する推奨事項:
Laravel でサードパーティのクラス ライブラリをロードする方法 laravel フレームワークの検索機能の実装以上がLaravelモデル関係設定サブテーブルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。