【问题标题】:Getting record in reverse order from pivot table in laravel从laravel中的数据透视表以相反的顺序获取记录
【发布时间】:2016-05-19 20:03:51
【问题描述】:

通常我们从父关系表中获取数据,并在 laravel 中获取数据透视表及其关系表的记录,但是我们可以在 eloquent 中使用数据透视表获取记录吗?

就像我想从数据透视表中获取产品记录及其数量记录一样,这使得它是独一无二的,所以我想从数据透视表中获取产品数据。我们可以在 laravel 中这样做吗?

谢谢。

【问题讨论】:

    标签: laravel eloquent laravel-5.2


    【解决方案1】:

    您可以使用内置的查询构建函数以相反的顺序生成表数据来执行此操作。 例如

    $users = DB::table('users') ->orderBy('id', 'desc')->get();

    将返回一个与用户 ID 相关的反向排列的数组。 此外,您可以使用更多功能。请阅读文档。

    https://laravel.com/docs/4.2/queries#advanced-wheres

    【讨论】:

    • 对不起使用最新的文档laravel.com/docs/5.2/queries#where-clauses
    • 感谢您的回答,但我正在尝试以反向关系顺序获取数据。就像使用数据透视表记录获取父数据一样。例如从数据透视表 id 获取产品信息。我们可以在 laravel 中这样做吗?
    • 因此,您可以在数据透视表中添加一列,指示特定行的生产 ID。我想现在你需要的是一些关于数据库关系的知识。下面给出了一个示例,如何在 Item Order 和 ordered_Items 表之间创建这种关系。
    【解决方案2】:

    在此示例中,假设客户从我们的商店订购商品。然后您应该能够跟踪订单中的商品,客户详细信息,数量等。因此我们可以使用以下类来做到这一点。

    • 客户
    • 订购
    • Order_item
    • 项目

    所以首先我们不得不提到模型中的数据库关系。例如一个客户有很多订单。因此在 Customer 模型中将其表示为如下函数。

    公共函数 order(){

               return $this->hasMany(App\Order);
    

    }

    也在订单模型中

    公共函数 customer(){

           return $this->belongsTo(App\Customer);
    

    }

    创建迁移文件时,您应该在订单表中为 customer_id 保留无符号整数列。保存数据时,您应该在订单详细信息中保存相关的 customer_id。 例如 订单表如下所示。

    • id(无符号,自增,整数)
    • customer_id(无符号,整数)
    • total_price
    • 等 请记住,要将客户表中的自动增量 id 保存到订单表 customer_id。或者让 laravel 使用方便的方法或类似方法为您完成此操作,

    $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 中的数据透视表是否会有所帮助。

    【讨论】:

    • 感谢您的详细回答。真的很感激。 :) 但实际上我是在谈论我们通常用于多对多关系的 laravel 数据透视表。而且我们实际上并没有在 laravel 中制作该表的模型,我认为这不是传统的做法。也许我们可以,但我没有在任何地方或任何示例中看到我们制作数据透视表的模型。
    • 更多关于数据透视表的信息在这里:laraveldaily.com/pivot-tables-and-many-to-many-relationships 现在在 laravel 中,我们可以使用它的父关系/模型轻松地从数据透视表中获取记录。但是我们不能轻易地直接从数据透视表中获取记录。这就是我想做的。我想我应该做一个模型并尝试一下。谢谢。
    • 抱歉无法提供帮助。
    猜你喜欢
    • 2019-04-25
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2012-10-12
    • 1970-01-01
    • 2022-01-06
    • 2019-07-25
    相关资源
    最近更新 更多