36

などを使用してテーブルの関係をかなり簡単に定義できることは知っていますが$this->belongs_to()$this->has_many()関係テーブルがどのように作成されるかはわかりません。2 つのテーブルを結合するテーブル (用語の名前は忘れました)。

ユーザーテーブルを作成しているとしましょう。そのユーザーを特定の「役割」に所属させたい。複数のロールがあり、すべてのロールは複数のユーザーを持つことができます。rolesそのためのテーブルも作成する必要があります。ここまでは順調ですね。

$this->belongs_to()しかし、ドキュメントを読んだ後、移行自体ではなく、モデルに追加する必要があると書かれています。リレーションシップ テーブルはいつ、どのように作成されますか? rolesテーブルとテーブルを作成し、モデルにusers追加$this->belongs_to('roles')し、モデルusersに追加すると、中央のテーブルが自動的に作成されますか?$this->has_many('users')roles

4

6 に答える 6

14

古い投稿ですが、更新されたものを投稿できます。Laravel5 の場合、Jeffrey WayはLaravel5 Generators-extendedphp artisanのジェネレーター機能を強化するパッケージを開発しました。

  • make:migration:schema
  • make:migration:pivot
  • make:seed

ユーザーとロールの間の多対多の関係については、単に使用できます

php artisan make:migration:pivot users role

必要な移行クラスが生成されます。このために手動でコーディングする必要はありません。

于 2015-04-30T03:07:39.230 に答える
2

私の知る限り、関係テーブルは作成されません。role_idユーザーを作成するときにロールの ID がそこに保存されるように、usersテーブルに を用意する必要があります。これにより、すべてのユーザーを選択できるrole_id == '1'ようになります。例えば:

$admins = User::where('role_id', '=', 1);

テーブルのどこにROLESあるレコードID='1'は管理者です。もう一度質問に答えると、関係テーブルは作成されません。代わりに、関係はrole_id各ユーザーの列の形式で 2 つのテーブル内に存在します。興味深いことに、外部キーを使用していますか?

リレーションシップ テーブルが必要な場合は、user_rolesor という名前のテーブルを作成してそこに and を格納role_idできuser_idますが、Laravel/Eloquent の優れた機能をすべて使用できるため、上記の方法を使用する方が簡単だと思います。

お役に立てれば :)

于 2012-11-27T19:51:19.303 に答える