【发布时间】:2016-05-19 20:03:51
【问题描述】:
通常我们从父关系表中获取数据,并在 laravel 中获取数据透视表及其关系表的记录,但是我们可以在 eloquent 中使用数据透视表获取记录吗?
就像我想从数据透视表中获取产品记录及其数量记录一样,这使得它是独一无二的,所以我想从数据透视表中获取产品数据。我们可以在 laravel 中这样做吗?
谢谢。
【问题讨论】:
标签: laravel eloquent laravel-5.2
通常我们从父关系表中获取数据,并在 laravel 中获取数据透视表及其关系表的记录,但是我们可以在 eloquent 中使用数据透视表获取记录吗?
就像我想从数据透视表中获取产品记录及其数量记录一样,这使得它是独一无二的,所以我想从数据透视表中获取产品数据。我们可以在 laravel 中这样做吗?
谢谢。
【问题讨论】:
标签: laravel eloquent laravel-5.2
您可以使用内置的查询构建函数以相反的顺序生成表数据来执行此操作。 例如
$users = DB::table('users') ->orderBy('id', 'desc')->get();
将返回一个与用户 ID 相关的反向排列的数组。 此外,您可以使用更多功能。请阅读文档。
【讨论】:
在此示例中,假设客户从我们的商店订购商品。然后您应该能够跟踪订单中的商品,客户详细信息,数量等。因此我们可以使用以下类来做到这一点。
所以首先我们不得不提到模型中的数据库关系。例如一个客户有很多订单。因此在 Customer 模型中将其表示为如下函数。
公共函数 order(){
return $this->hasMany(App\Order);
}
也在订单模型中
公共函数 customer(){
return $this->belongsTo(App\Customer);
}
创建迁移文件时,您应该在订单表中为 customer_id 保留无符号整数列。保存数据时,您应该在订单详细信息中保存相关的 customer_id。 例如 订单表如下所示。
$order->customer_id=$customer->id //假设您在上面创建了客户对象。 但是我更喜欢手动保存 id,因为它对我来说更清楚。
因此,当您想查找特定订单的客户时,请查看带有客户 ID 的客户表。 例如
$customer=Customer::where('id',$order->customer_id)->first();
如果您想查找特定客户的订单,您可以这样做,
$orders_array= Order::where('customer_id', $customer->id)-get();
因此您可以轻松地穿越两边。我没有明白你所说的数据透视表是什么意思。如果您能描述更多,Excel 中的数据透视表是否会有所帮助。
【讨论】: