php - 修改集合中的laravel表名仅用于输出
问题描述
我有两个模型
class MerchOrder extends Model
{
protected $table = 'merch_orders';
protected $with = 'merchProducts';
public function merchProducts()
{
return $this->belongsToMany(MerchProduct::class, 'merch_products_ordered', 'orderno', 'product')
->withPivot('quantity', 'price');
}
}
和
class MerchProduct extends Model
{
protected $table = 'merch_products';
public function merchOrders ()
{
return $this->belongsToMany(MerchOrder::class, 'merch_products_ordered', 'product', 'orderno');
}
}
这是返回的
{
"id": 1234,
"receipt": "G4DD8C",
"employee": 01,
"location": 2,
"time_insert": "2020-02-21 10:46:47",
"time_update": "2020-02-23 06:11:23",
"status": "delivered",
"merch_products": [
{
"id": 45,
"title": "Example Title",
"desc": "Example Description",
"price": "237.50",
"pivot": {
"orderno": 57,
"product": 45,
"quantity": 1,
"price": "237.50"
}
}
]
},
如何调整相关类中输出的表名?IE。这部分,我希望输出为“ordered”而不是表名“merch_products”
"merch_products": [
{
我已经尝试过 laravel as() 方法,但它只是重命名了“pivot”键,而我能找到的所有其他内容都只涉及重命名单个属性,而不是整个属性集合。
TIA
解决方案
如果您希望它以不同的名称获取并传递您想要用作外部引用的自定义列名称,您可以这样命名关系。您可以在此处阅读有关Laravel 命名约定的更多信息。
您需要将 MerchOrder 模型更改为以下内容:
class MerchOrder extends Model
{
protected $table = 'merch_orders';
protected $with = 'orders';
public function orders()
{
return $this->belongsToMany(MerchProduct::class, 'merch_products_ordered', 'orderno', 'product')
->withPivot('quantity', 'price');
}
}
推荐阅读
- flutter - 如何调用返回 Future 的异步函数
在三元函数中根据返回值有不同的颜色? - javascript - 我正在处理一个文档 config.env 并且在索引文档上调用它之后它没有工作
- macos - 如何让 Apple FaceTime ISP 摄像头报告当前曝光
- flowtype - 流类型定义被忽略以支持 npm 模块?
- r - 在带有 Shiny 的 Plotly 地图中保留套索选择和框选择的信息的问题
- javascript - 使用 AJAX 发送 JS 对象不更新 PHP 脚本
- r - 错误:参数暗示不同的行数:5、1、2、0
- c# - 带有 Twilio .netcore Blazor 服务器端的短信通知
- r - 代码块以交互方式在 R markdown 文件中工作,但当我使用 bookdown “构建书籍”时则不行
- google-apps-script - 在谷歌表格中是否有任何方法可以使用 importrange 但保持格式?(无付费插件)