Laravel table 加入
Laravel table joins
我正在尝试进行一些 table 连接并需要显示一些 trouble.i
2000 年 4 月之后订购的每件商品的客户完整姓名和职位、商品描述、订购数量。我制作了一个可以工作的 SQL 脚本,但我需要使用 Laravel ORM。
SELECT `first_name`,`last_name`,o.order_id,`quantity`,`description`,`date_placed`
FROM `customer` c
JOIN `order` o
ON c.`customer_id` = o. `customer_id`
JOIN `orderline` ol
ON o.`order_id` = ol. `order_id`
JOIN `item` i
ON ol.`item_id` = i. `item_id`
WHERE `date_placed` > '2000-4-00';
我为 tables "Customer"、"Order"
创建了 2 个模型
这是我的客户模型
public function orders(){
return $this->hasMany('App\Order','customer_id');
}
这是我的订单型号
public function orderline(){
return $this->hasMany('App\Orderline','order_id');
}
现在我可以获取一些数据,但我觉得这不是一个好方法
$customer = Customer::all();
foreach($customer as $input){
$item = Customer::find($input->customer_id)->orders;
$name = $input->title . ' ' . $input->first_name . ' ' . $input->last_name;
$datePlaced = null;
$orderID = null;
foreach($item as $value){
$orderID = $value->order_id;
$datePlaced = $value->date_placed;
$order = Order::find($value->order_id)->orderline;
}
如果有人能给我指出正确的方向,那就太好了。
您似乎想要获取所有 Customer
及其 Order
和 OrderLine
的内容?
Customer::with(['order' => function ($query) {
$query->where('date_placed', '>=', '2000-04-01')->with('orderline');
}])->get();
如果你想限制关系的列,你可以...
Customer::with(['order' => function ($query) {
$query->select(/* columns */)->where('date_placed', '>=', '2000-04-01')
->with(['orderline' => function ($query) {
$query->select(/* columns here */);
}]);
}])->get();
只要确保如果您在关系中指定了列,那么您会为每个关系选择所有外键或相关列。
我正在尝试进行一些 table 连接并需要显示一些 trouble.i 2000 年 4 月之后订购的每件商品的客户完整姓名和职位、商品描述、订购数量。我制作了一个可以工作的 SQL 脚本,但我需要使用 Laravel ORM。
SELECT `first_name`,`last_name`,o.order_id,`quantity`,`description`,`date_placed`
FROM `customer` c
JOIN `order` o
ON c.`customer_id` = o. `customer_id`
JOIN `orderline` ol
ON o.`order_id` = ol. `order_id`
JOIN `item` i
ON ol.`item_id` = i. `item_id`
WHERE `date_placed` > '2000-4-00';
我为 tables "Customer"、"Order"
创建了 2 个模型这是我的客户模型
public function orders(){
return $this->hasMany('App\Order','customer_id');
}
这是我的订单型号
public function orderline(){
return $this->hasMany('App\Orderline','order_id');
}
现在我可以获取一些数据,但我觉得这不是一个好方法
$customer = Customer::all();
foreach($customer as $input){
$item = Customer::find($input->customer_id)->orders;
$name = $input->title . ' ' . $input->first_name . ' ' . $input->last_name;
$datePlaced = null;
$orderID = null;
foreach($item as $value){
$orderID = $value->order_id;
$datePlaced = $value->date_placed;
$order = Order::find($value->order_id)->orderline;
}
如果有人能给我指出正确的方向,那就太好了。
您似乎想要获取所有 Customer
及其 Order
和 OrderLine
的内容?
Customer::with(['order' => function ($query) {
$query->where('date_placed', '>=', '2000-04-01')->with('orderline');
}])->get();
如果你想限制关系的列,你可以...
Customer::with(['order' => function ($query) {
$query->select(/* columns */)->where('date_placed', '>=', '2000-04-01')
->with(['orderline' => function ($query) {
$query->select(/* columns here */);
}]);
}])->get();
只要确保如果您在关系中指定了列,那么您会为每个关系选择所有外键或相关列。