如何在laravel中从多对多关系中检索多个记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在laravel中从多对多关系中检索多个记录相关的知识,希望对你有一定的参考价值。
在此先感谢,我有从多对多关系中检索数据的问题,我有订单,每个订单都有很多产品,而且我正在分析当今订单中销售的产品数量,但是当我打电话时1个订单ID出现错误,表示关系方法不存在。 订单型号:
class orders extends Model {
protected $table = 'orders';
public $timestamps = false;
protected $fillable = [
'serial', 'clientName', 'phone', 'cost', 'notes', 'received_by', 'received_at'
];
public function product() {
return $this->belongsToMany('\App\Products', 'order_product', 'order_id', 'product_id')->withPivot('product_id', 'count');
}
}
产品型号:
class Products extends Model {
protected $table = 'products';
public $timestamps = false;
protected $fillable = [
'name', 'cost', 'available', 'notes', 'created_at'
];
public function order() {
return $this->belongsToMany('\App\Orders', 'order_product', 'product_id', 'order_id')->withPivot('order_id', 'product_id', 'count');
}
}
这是控制器
$today_orders = Orders::where('received_at', '>=', Carbon::today()->startOfDay())->where('received_at', '<=', Carbon::today()->endOfDay());
$today_orders_ids = array();
foreach($today_orders->get() as $order) {
array_push($today_orders_ids, $order->id);
}
$today_orders_products = Orders::find($today_orders_ids)->product()->get();
错误信息:
BadMethodCallException
Method product does not exist.
我的代码中有错误吗?或者我无法从关系中获得多条记录 注意:
一切都完美无缺,直到find()方法,关系和检索今天的订单
答案
用以下方法替换控制器中的第2-5行:
$today_orders = $today_orders->with('product')->get();
$today_orders_products = $today_orders->pluck('product')->collapse();
以上是关于如何在laravel中从多对多关系中检索多个记录的主要内容,如果未能解决你的问题,请参考以下文章