gpt4 book ai didi

php - Laravel Eloquent 预加载假定数据透视表列名称不正确

转载 作者:行者123 更新时间:2023-11-29 10:40:19 25 4
gpt4 key购买 nike

我在 Laravel 5.4 中有两个表。通过多对多关系连接的订单和产品

我正在尝试获取所有订单以及相关产品,如下所示:

$orders = Orders::with('products')->get();

我的订单模型已将其设置为

public function products()
{
return $this->belongsToMany('App\Product')
->withPivot('qty')
->withTimeStamps();
}

当我输出日志时,我收到以下错误消息:

Next Illuminate\Database\QueryException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'order_product.order_order_id' in 'field list' (SQL: select `products`.*, `order_product`.`order_order_id` as `pivot_order_order_id`, `order_product`.`product_product_id` as `pivot_product_product_id`, `order_product`.`qty` as `pivot_qty`, `order_product`.`created_at` as `pivot_created_at`, `order_product`.`updated_at` as `pivot_updated_at` from `products` inner join `order_product` on `products`.`product_id` = `order_product`.`product_product_id` where `order_product`.`order_order_id` in (66, 67, 70, 72, 73, 74) and `products`.`deleted_at` is null) in /home/vagrant/Projects/vcc-backoffice/vendor/laravel/framework/src/Illuminate/Database/Connection.php:647

问题是 Laravel 正在数据透视表中查找名为“order_order_id”的表,但该表不存在。我还没有宣布该专栏的名称是这样的。我的数据透视表列名为“order_id”和“product_id

我不知道 Laravel 如何假定数据透视表名称。有没有办法专门声明数据透视表中的列名称?或者我的命名约定有误?

最佳答案

编辑订单模型并尝试以下代码:

public function products()
{
return $this->belongsToMany('App\Product','order_product','order_id','product_id')
->withPivot('qty')
->withTimeStamps();
}

关于php - Laravel Eloquent 预加载假定数据透视表列名称不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45619564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com