In Laravel, we often need to use relational databases to store and manage data, and one-to-many relationships are the most common one. A one-to-many relationship refers to a relationship in which a model has multiple associated models. It is usually used to implement some common business scenarios, such as one user corresponding to multiple orders or one course corresponding to multiple students.
In Laravel, we can use Eloquent ORM to implement one-to-many relationship query. Below I will introduce in detail how to use the Eloquent model in Laravel to query the one-to-many relationship between three tables.
First, we need to design three tables, namely the main table, the sub-table and the sub-table foreign key association table. The following is the design of the sample table:
Main table: users
id | name | |
---|---|---|
1 | Tom | tom@laravel.com |
2 | Jerry | jerry@laravel.com |
3 | Bob | bob@laravel.com |
Sub table: orders
id | order_no | user_id |
---|---|---|
1 | 1001 | 1 |
2 | 1002 | 2 |
3 | 1003 | 3 |
4 | 1004 | 1 |
Sub-table foreign key related table: order_items
id | order_id | product_name |
---|---|---|
1 | 1 | apple |
2 | 1 | banana |
3 | 2 | pear |
4 | 4 | orange |
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; } }
The above is the detailed content of How to check one to many tables in laravel. For more information, please follow other related articles on the PHP Chinese website!