【Laravel5.8】Eloquentのリレーションを使いたい
mysql> select * from orders;
+----+---------+---------+--------+
| id | user_id | book_id | status |
+----+---------+---------+---------+
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 1 |
| 3 | 2 | 1 | 1 |
| 4 | 2 | 4 | 1 |
このような形で別テーブルのidを持つテーブルが多いですが、
ordersテーブルからuserテーブルのカラムを引っ張ってくるということができます。
それがEloquentのリレーションと言います。
Model
class Order extends Model
{
public function ordersToUser() {
return $this->belongsTo('App\User','user_id');
}
}
class User extends Authenticatable
{
Public function order()
{
return $this->hasMany('App\Order','user_id');
}
}
Controller
public function orders(){ $orders = Order::where('status','=','1')->get(); return view('supplier.orders',compact('orders')); }
View
@foreach($orders as $order) <tr> <td>{{$order->orders->title}}</td> <td>{{$order->ordersToUser->name}}</td>★ </tr>
★の行のように受け渡すことが可能。
$order->ordersToUser->name
($orderが持つuser_idに対応するuserのnameを引っ張ってくる)
という意味です。