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

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

ホットトピック









Laravel - アーティザン コマンド - Laravel 5.7 には、新しいコマンドを処理およびテストするための新しい方法が付属しています。これには職人コマンドをテストする新しい機能が含まれており、そのデモについては以下で説明します。

Laravel - ページネーションのカスタマイズ - Laravel には、ユーザーまたは開発者がページネーション機能を組み込むのに役立つページネーションの機能が含まれています。 Laravel ページネーターは、クエリ ビルダーおよび Eloquent ORM と統合されています。自動ページネーションメソッド

Laravelの電子メールの送信が失敗したときに戻りコードを取得する方法。 Laravelを使用してアプリケーションを開発する場合、検証コードを送信する必要がある状況に遭遇することがよくあります。そして実際には...

LaravelスケジュールタスクRAN RANSPONSIVEトラブルシューティングRALAVELのスケジュールタスクスケジューリングを使用すると、多くの開発者がこの問題に遭遇します。スケジュール:実行...

Laravelの電子メールの検証コードの送信の障害を処理する方法は、Laravelを使用することです...

DCATを使用するときにDCATADMIN(Laravel-Admin)にデータを追加するためにカスタムクリックのテーブル関数を実装する方法...

Laravel - ダンプサーバー - Laravel ダンプサーバーには、Laravel 5.7 のバージョンが付属しています。以前のバージョンにはダンプ サーバーが含まれていません。ダンプサーバーはlaravel/laravelコンポーザーファイルの開発依存関係になります。

Laravel FrameworkでRedis接続の共有の影響とLaravelフレームワークとRedisを使用する際のメソッドを選択すると、開発者は問題に遭遇する可能性があります。
