Nano Hash - криптовалюты, майнинг, программирование

Как получить дополнительные данные для подачи типа поля коллекции symfony2?

Я использую базовое поле коллекции с Symfony2, и все работает хорошо.

Скажем, у меня есть:

->add('product', 'collection', array(...))

Теперь, на мой взгляд, я звоню product.vars.data.owner, где у меня есть oneToOne product->getOwner().

Это создает один дополнительный запрос для каждого продукта в коллекции. Поскольку я не могу использовать построитель запросов в поле коллекции, как я могу убедиться, что эта доктрина извлекает владельцев продукта, чтобы избежать этих многочисленных дополнительных запросов?

26.03.2015

  • каков тип ваших полей в коллекции? Вы можете получить свои сущности и отношения сущностей с помощью dql, а затем передать сущность методу createForm() 26.03.2015
  • Подтип моей коллекции содержит только один строковый атрибут объекта. Я могу получить данные с помощью dql, да. как бы вы сделали это с помощью createform ? 26.03.2015
  • Пожалуйста, разместите здесь свой код formType и сопоставление вашей сущности. 26.03.2015

Ответы:


1

Это пример (я не вижу вашего отображения данных и построителя форм), надеюсь, это поможет вам:

1 : Получить данные по dql,

$dql = "select c from category c left join c.product p join p.owner o where c.id = ?1";
$category = $this->createQuery($dql)->setParameter(1, $id)->getSingleResult();

2: Предположим, у вас есть форма категории, в которой может быть много продуктов:

class Category
{
    // manyToMany
    private $product
}

$form = $this->createForm(new CategoryType(), $category);

3: Если тип вашей коллекции является встроенным ProductType (типом формы), вы можете использовать следующую строку в своем шаблоне:

{{ form.product.vars.data.owner }} 
26.03.2015
  • да, конечно, увлажняйте объект перед тем, как отправить его в форму, это, очевидно, правильное решение здесь! спасибо :) ! 27.03.2015

  • 2

    Если вы не можете использовать построитель запросов, вы можете заставить Doctrine всегда загружать владельца продукта всякий раз, когда продукт загружается с помощью EAGER, загружающего ассоциацию:

    /**
     * @ORM\OneToOne(targetEntity="Application\Entity\Owner", fetch="EAGER")
     */
    protected $owner;
    

    http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-objects.html#by-eager-loading

    26.03.2015
  • спасибо, это работает, но затем загружает владельца каждый раз, когда я работаю с продуктом, это не совсем то, что я ищу... 26.03.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..