Laravel 查询拉维关系

Laravel 查询拉维关系,laravel,eloquent,Laravel,Eloquent,我有3个模型 内购模式 有序模型 在我的OrderItem模型中 是否可以通过Laravel中的订单关系从采购中查询订单项目 有序模型 我将belongsTo更改为hasMany protected $fillable = [ 'name', 'quantity', 'unit_cost', 'discount', 'tax', 'sub_total' ]; public function order_items() { retur

我有3个模型

内购模式

有序模型

在我的OrderItem模型中


是否可以通过Laravel中的订单关系从采购中查询订单项目

有序模型

我将
belongsTo
更改为
hasMany

   protected $fillable = [
        'name', 'quantity', 'unit_cost', 'discount', 'tax', 'sub_total'
    ];

    public function order_items()
    {
        return $this->hasMany(\App\OrderItem::class);
    }

是的,您可以在模型中写入此关系,并按如下方式编写查询:

$purchase = Purchase::with('order.order_items')->find(1);
购买

public function order()
{
    return $this->belongsTo('App\Models\Order', 'order_id', 'id');
}
订购商品

public function order()
{
    return $this->belongsTo('App\Models\Order', 'order_id', 'id');
}
命令

现在您可以使用此查询:

$purchase = \App\Models\Purchase::first();
$order_items = $purchase->order->order_items;

我看到您已将
belongsTo
的关系Order->OrderItem修复为
hasMany
。但问题也在于如何通过关系进行查询,所以我将把这些加起来,以便它对这里的其他用户有用

现在你可以做了

$order_items = $purchase->order->order_items
以获取采购的订单项目

但是,您应该考虑这将对DB执行进一步的查询。一个用于获取订单,另一个用于获取订单项目。如果您循环浏览购买列表,这可能会迅速升级,最终导致太多的DB查询,并影响应用程序的性能

解决办法是立即加载

您可以按照以下方式预取订单和物品:

$purchase = Purchase::with('order.order_items')->find(1);
或者,如果您已获取购买,则可以执行以下操作:

$purchase->load('order.order_items');
然后在代码中获取订单项时,如下所示
$purchase->order->order\u items
,您对数据库没有其他查询。

请填写您的模型和关系我在purchase and order\u items@mohammadHosseiniYes中有订单id。但是您需要在Laraveltanks中的模型中定义您的关系以添加更多详细信息。无论如何,你知道如何使用
vuejs
查询渴望的关系吗
vuejs
是应用程序的前端部分。在后端逻辑(即上面的Laravel代码)中处理加载关系。一旦后端eager加载数据,它只需将其传递到前端层,以便对加载的数据执行可视化逻辑。查询关系工作正常,但当我尝试使用
关系eager进行查询时,它不起作用
“它不起作用”不是很有帮助。请说得更具体些。它会抛出错误吗?不会,我没有使用过。很高兴你解决了你的问题。如果你认为我的回答有用,你可以投赞成票。
$order_items = $purchase->order->order_items
$purchase = Purchase::with('order.order_items')->find(1);
$purchase->load('order.order_items');