我正在寻找一个解决方案,根据null(用户(的参数恢复get中的数据:
{
"@context": "/api/contexts/ShippingCost",
"@id": "/api/shipping_costs",
"@type": "hydra:Collection",
"hydra:member": [
{
"@id": "/api/shipping_costs/1",
"@type": "ShippingCost",
"id": 1,
"minWeight": 0,
"maxWeight": 251,
"france": 4.87,
"domTom": 4.21,
"aerial": 3.84,
"zone": {
"@id": "/api/zones/1",
"@type": "Zone",
"id": 1,
"name": "Guadeloupe",
"TaxFOB": 35,
"TaxSurete": 0.2,
"TaxFuel": 0.77,
"TaxGuerre": 0.24,
"Lta": 0,
"InfoDouane": 24,
"CreditEnlevement": 0,
"EntreposageCci": 0.4,
"EntreposageCciMin": 15,
"RemiseDoc": 43,
"Surete": 0,
"AvanceFond": 0,
"Tid": 13,
"Spia": 10,
"InterTransite": 50
},
"user": null
},
{
"@id": "/api/shipping_costs/162",
"@type": "ShippingCost",
"id": 162,
"minWeight": 0,
"maxWeight": 250,
"france": 3,
"domTom": 5,
"aerial": 4,
"zone": {
"@id": "/api/zones/4",
"@type": "Zone",
"id": 4,
"name": "Guyane",
"TaxFOB": 30,
"TaxSurete": 0.2,
"TaxFuel": 0.77,
"TaxGuerre": 0.24,
"Lta": 34.1,
"InfoDouane": 24,
"CreditEnlevement": 0,
"EntreposageCci": 0.4,
"EntreposageCciMin": 6,
"RemiseDoc": 34.5,
"Surete": 0,
"AvanceFond": 0,
"Tid": 0,
"Spia": 0,
"InterTransite": 10
},
"user": "/api/customers/153"
},
目前它检索表中的所有数据,而我只想在GET中恢复user=null 的所有数据
您知道API平台需要什么样的参数才能做到这一点吗?。
我的实体:
/**
* @ApiResource(
* attributes={"pagination_enabled"=false},
* collectionOperations={
* "get"={
* "method"="GET",
* "normalization_context"={"groups"={"shippingGet", "shippingGetCollection"}},
* "access_control"="is_granted('ROLE_ADMIN') or is_granted('ROLE_CUSTOMER')"
* },
* "getCustomPrices"={
* "method"="GET",
* "normalization_context"={"groups"={"shippingGetCustomPrice"}},
* "access_control"="is_granted('ROLE_ADMIN') or is_granted('ROLE_CUSTOMER')",
* "path"="/shipping_costs/{userId}/customPrices",
* "route_name"="get_shipping_costs_userid",
* "controller"="AppControllerShippingCostsController",
* "swagger_context" = {
* "parameters" = {
* {
* "name" = "userId",
* "in" = "query",
* "description" = "ID customer",
* "type" : "string",
* }
* }
* }
* },
* "post"={
* "method"="POST",
* "normalization_context"={"groups"={"shippingPost"}},
* "access_control"="is_granted('ROLE_ADMIN')"
* }
* },
* itemOperations={
* "getItem"={
* "method"="GET",
* "normalization_context"={"groups"={"shippingGet", "shippingGetItem"}},
* "access_control"="is_granted('ROLE_ADMIN') or is_granted('ROLE_CUSTOMER')"
* },
* "delete"={
* "method"="DELETE",
* "normalization_context"={"groups"={"shippingDelete"}},
* "access_control"="is_granted('ROLE_ADMIN')"
* },
* "put"={
* "method"="PUT",
* "normalization_context"={"groups"={"shippingPost"}},
* "access_control"="is_granted('ROLE_ADMIN')"
* }
* }
* )
* @ORMEntity(repositoryClass="AppRepositoryShippingCostRepository")
*/
class ShippingCost
{
谢谢你的帮助。
"exists筛选器允许您根据可为null的字段值选择项">
您可以将现有过滤器添加到Entity类中,如下所示:
// ..
use ApiPlatformCoreBridgeDoctrineOrmFilterExistsFilter;
/**
* @ApiResource(
* ..
* )
* @ApiFilter(ExistsFilter::class, properties={"user"})
*/
class ShippingCost
然后你可以用类似的东西来取它们:
https://localhost:8443/api/shipping_costs?exists[user]=false。
过滤器使用带有@ApiFilter标记的Entity类型的方法GET在所有collectionOperations的默认DataProvider上工作。无论何时,它也将对您的操作起作用;getCustomPrices"取决于控制器是否使用所提供的数据。但是因为它在你的ApiResource标签中的配置不包含";读取"=我想是假的。