fearintino
@fearintino
Php - Developer

Как убрать избыточную информацию из $entity возвращаемой Doctrine2, Symfony?

У меня есть сущьность Product которая которая связана с другой сущьностью связъю
/**
* @ORM\ManyToOne(targetEntity="\бла\бла\Entity\Brand")
*/
protected $brand;

У сущьности бренда есть много свойств. Так вот при запросе продукта таким образом:
$entities = $entityManager->getRepository('бла бла\Product')->findBy(
                $filters,
                $orderBy,
                $limit,
                $offset
            );

Получаю следующий результат:
{
"id": 178,
    "sku": "ART9870",
    "barcode": "66075392",
    "supply_price": {
      
    }
    "sell_price": {
     
    }
    "properties": {
      
    }
    "company": {
     
    }
    "brand": {
      "id": 632,
      "name": "Waelchi, Will and Reinger",
      "property_dictionaries": [
        {
          "name": "velit",
          "value_list": [
            "error",
            "enim",
            "aliquid",
            "enim",
            "suscipit",
            "inventore",
            "minima",
            "aperiam",
            "quia",
            "officiis"
          ]
          "position": 0,
          "id": 1252
        }
        {
          "name": "et",
          "value_list": [
            "molestiae",
            "saepe",
            "provident",
            "voluptas",
            "numquam",
            "et",
            "harum",
            "nemo",
            "ut",
            "facilis"
          ]
          "position": 1,
          "id": 1254
        }
       
      ]
      "company": {
        "id": 316,
        "name": "Kilback, Gislason and Swift"
      }
    }
  }

Так вот сам вопрос как сделать так чтобы вместо всей сущности Brand возвращался только Brand id
  • Вопрос задан
  • 291 просмотр
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
смотря как вы сериализуете данные. В любом случае вы всегда можете в методе каком-нибудь просто обойти все через map. в сочитании с ленивой подгрузкой данных можно сделать это даже без особого оверхэда
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
lexxpavlov
@lexxpavlov
Программист, преподаватель
Посмотрите на Partial objects.

Или, если ваша задача позволит, используйте DBAL вместо ORM - вам вернутся только запрошенные данные в виде массива, без связанных объектов (ну, разве вы явно укажете их в SQL). В общем, DBAL - это возможность просто выполнить любой SQL-запрос, без привязки к сущностям.
Ответ написан
lucchese
@lucchese
Symfony2 Development
Вы просто дамп делаете вот оно и подгружает все
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы