[英]Laravel Lighthouse - Sorting a query by a property of a relationship
[英]How to Query Multiple Pivot Relationship in Laravel Lighthouse
嗨,我是 laravel-lighthouse 的新手。 我已阅读文档,但不幸的是,没有关于此问题的详细信息。 我的问题是如何查询多个 pivot 表。 我有一个属于许多其他模型的项目表。 代码如下。
class Item extends Model
{
public function provisions(): BelongsToMany
{
return $this->belongsToMany(Pwmp::class,
'project_wise_material_provision_items', 'item_id', 'provision_id')
->withPivot('qty', 'unit_cost')
->withTimestamps()
->as('provision_items');
}
public function procurements(): BelongsToMany
{
return $this->belongsToMany(Pwpp::class,
'project_wise_procurement_plan_items', 'item', 'procurement')
->withTimestamps()
->as('procurement_items')
->withPivot('qty', 'unit_cost');
}
public function log_sheets(): BelongsToMany
{
return $this->belongsToMany(Braols::class,
'bid_receiving_and_opening_log_sheet_items', 'item', 'braols')
->withTimestamps()
->as('log_sheet_items')
->withPivot('qty', 'unit_cost', 'tax');
}
public function workshop(): BelongsToMany
{
return $this->belongsToMany(TransformerWorkshop::class,
'transformer_workshop_items', 'item', 'workshop')
->as('workshop_items')
->withTimestamps()
->withPivot('qty', 'flow', 'type');
}
public function sub_office(): BelongsToMany
{
return $this->belongsToMany(MaterialReceiptInSubOffice::class,
'material_receipt_in_sub_office_items', 'item', 'receipt')
->as('sub_office')
->withTimestamps()
->withPivot('id','qty', 'type');
}
type Item{
id: ID!
workshop_items: [TransformerWorkShopItemsPivot]
provision_items: [ProjectWiseMaterialProvisionItem]
sub_office: MaterialReceiptInSubOfficeItemsPivot
}
type MaterialReceiptInSubOfficeItemsPivot{
qty: Int
type: Int
id: ID
}
type ProjectWiseMaterialProvisionItem {
qty: String
unit_cost: String
}
type TransformerWorkShopItemsPivot{
qty: Int
type: Int
flow: Int
}
{ "data": { "material_receipt_in_sub_office_store": { "id": "4", "items": [ { "id": "431", "name": "Drill Machine", "image": "crane2.jpg", "category_id": { "id": "993" }, "provision_items": null, "sub_office": { "type": null, "id": null, "qty": null, "__typename": "MaterialReceiptInSubOfficeItemsPivot" } },
首先,您似乎没有在类型定义中使用 Laravel 模型的关系。
通过指定 @belongsToMany / @hasMany 指令( 在此处查看更多内容),您将能够优化您的查询。
type Item{
id: ID!
workshop_items: [TransformerWorkShopItemsPivot] @hasMany(relation: "workshop")
provision_items: [ProjectWiseMaterialProvisionItem] @hasMany(relation: "provisions")
sub_office: MaterialReceiptInSubOfficeItemsPivot @hasMany
}
我只是不确定你在你的关系定义中给表别名的事实..
然后,通过查询,您可以获取任意多的 pivot 关系。 这样做从来没有遇到关系问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.