Laravel:急切加载特定列
Laravel: Eager loading specific columns
为什么
Order::with(['products'=>function($q){
$q->select('name', 'price', 'quantity')->orderBy('name','asc');
}])->paginate($length);
returns 所有订单及其各自的产品数据,但是
Order::with(['products'=>function($q){
$q->select('name', 'price', 'quantity')->orderBy('name','asc');
}])->select('pickup_date', 'pickup_time', 'remark')->paginate($length);
提供我想要的所有订单数据,但产品数组为空?
我想 select 订单 table 中的某些特定列与产品 table 中的某些特定列。我该怎么做?
仅供参考:
Orders-products 与 models 是多对多的关系:
订购型号:
public function products()
{
return $this->belongsToMany('App\Models\Product')->withTimestamps();
}
产品型号:
public function orders()
{
return $this->belongsToMany('App\Models\Order')->withTimestamps();
}
你需要这样 select :
Order::with(['products'=>function($q){
$q->orderBy('name','asc');
}])->select('products.name as name','products.price as price','products.quantity as quantity','orders.pickup_date as pickup_date', 'orders.pickup_time as pickup_time', 'orders.remark as remark')->paginate($length);
或没有子查询:
Order::with('products')
->select('products.name as name','products.price as price','products.quantity as quantity','orders.pickup_date as pickup_date', 'orders.pickup_time as pickup_time', 'orders.remark as remark')
->orderBy('name','asc');
->paginate($length);
你遗漏了一件事,你应该在外部添加产品 ID select。
Order::with(['products'=>function($q){
$q->select('name', 'price', 'quantity')->orderBy('name','asc');
}])->select('product_id','pickup_date', 'pickup_time', 'remark')->paginate($length);
希望对您有所帮助
为什么
Order::with(['products'=>function($q){
$q->select('name', 'price', 'quantity')->orderBy('name','asc');
}])->paginate($length);
returns 所有订单及其各自的产品数据,但是
Order::with(['products'=>function($q){
$q->select('name', 'price', 'quantity')->orderBy('name','asc');
}])->select('pickup_date', 'pickup_time', 'remark')->paginate($length);
提供我想要的所有订单数据,但产品数组为空?
我想 select 订单 table 中的某些特定列与产品 table 中的某些特定列。我该怎么做?
仅供参考: Orders-products 与 models 是多对多的关系: 订购型号:
public function products()
{
return $this->belongsToMany('App\Models\Product')->withTimestamps();
}
产品型号:
public function orders()
{
return $this->belongsToMany('App\Models\Order')->withTimestamps();
}
你需要这样 select :
Order::with(['products'=>function($q){
$q->orderBy('name','asc');
}])->select('products.name as name','products.price as price','products.quantity as quantity','orders.pickup_date as pickup_date', 'orders.pickup_time as pickup_time', 'orders.remark as remark')->paginate($length);
或没有子查询:
Order::with('products')
->select('products.name as name','products.price as price','products.quantity as quantity','orders.pickup_date as pickup_date', 'orders.pickup_time as pickup_time', 'orders.remark as remark')
->orderBy('name','asc');
->paginate($length);
你遗漏了一件事,你应该在外部添加产品 ID select。
Order::with(['products'=>function($q){
$q->select('name', 'price', 'quantity')->orderBy('name','asc');
}])->select('product_id','pickup_date', 'pickup_time', 'remark')->paginate($length);
希望对您有所帮助