Laravel では、データの保存と管理にリレーショナル データベースを使用する必要があることが多く、1 対多の関係が最も一般的です。 1 対多の関係とは、モデルに複数の関連付けられたモデルがある関係を指します。通常、1 人のユーザーが複数の注文に対応する、または 1 つのコースが複数の学生に対応するなど、いくつかの一般的なビジネス シナリオを実装するために使用されます。
Laravel では、Eloquent ORM を使用して 1 対多のリレーションシップ クエリを実装できます。以下では、Laravel で Eloquent モデルを使用して 3 つのテーブル間の 1 対多の関係をクエリする方法を詳しく紹介します。
まず、メイン テーブル、サブテーブル、サブテーブルの外部キー関連付けテーブルという 3 つのテーブルを設計する必要があります。サンプル テーブルの設計は次のとおりです。
メイン テーブル: users
id | name | |
---|---|---|
1 | Tom | tom@laravel.com |
2 | ジェリー | jerry@laravel.com |
3 | ボブ | bob@laravel.com |
サブテーブル:orders
id | order_no | user_id |
---|---|---|
1 | 1001 | 1 |
2 | 1002 | 2 |
3 | 1003 | 3 |
4 | 1004 | 1 |
サブテーブル外部キー関連テーブル: order_items
#id | order_id | product_name |
---|---|---|
1 | 1 | apple |
2 | 1 | バナナ |
3 | 2 | ナシ |
4 | 4 | オレンジ |
4 | grape |
class User extends Model { public function orders() { return $this->hasMany(Order::class); } }
class Order extends Model { public function user() { return $this->belongsTo(User::class); } public function items() { return $this->hasMany(OrderItem::class); } }
class OrderItem extends Model { public function order() { return $this->belongsTo(Order::class); } }
$user = User::find(1); foreach ($user->orders as $order) { echo $order->order_no; foreach ($order->items as $item) { echo $item->product_name; } }
$user = User::with('orders.items')->find(1); foreach ($user->orders as $order) { echo $order->order_no; foreach ($order->items as $item) { echo $item->product_name; } }
以上がLaravelで1対複数のテーブルをチェックする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。