ホームページ  >  記事  >  バックエンド開発  >  Laravelモデル関係設定サブテーブル

Laravelモデル関係設定サブテーブル

不言
不言オリジナル
2018-04-21 14:11:092018ブラウズ

この記事では、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 サイトの他の関連記事を参照してください。

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