<?php
config/packages/monolog.yaml
doctrine:mapping:import
(эта функция кстати депрекейтет и скоро удалят, если никто не вызовется поддерживать) и сверяю с тем, что написано у меня, т.к Доктрина очень капризна, у вас может быть всё правильно написано, но не в том порядке или не в том месте.$this->addSql();
$this->addSql('COMMENT ON COLUMN table.field IS \'(DC2Type:datetime_immutable)\'');
php bin/console doctrine:mapping:import "App\EntityFromDB" annotation --path=src/EntityFromDB
name
/type
/length
/nullable
) в сущности, если не хотите получить каламбур и непонятное поведение доктриныcreateQueryBuilder
leftJoin
c Join::WITH
public function getAllProductsWithCategories(): array
{
/** @var Product[] $entities */
$entities = $this->repo->createQueryBuilder('t')
->select('t')
->leftJoin(Category::class, 't2', Join::WITH,'t.id = t2.product') //здесь джойним по полям, которые объявлены в наших сущностях (пункт 1)
->getQuery()
->getArrayResult();
if (count($entities) === 0) {
throw new EntityNotFoundException('No product.');
}
return $entities;
}
SEQUENCE
не для PostgreSQL, а для MySQL и его клонов.IDENTITY
/**
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private int $id;
NONE
/**
* @ORM\Column(type="id")
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\SequenceGenerator(sequenceName="custom_seq", initialValue=100)
* @ORM\Id
*/
private int $id;
/app/{bot}/settings/
- priority=-1
options={"default"="now()"}
/**
* @ORM\Column(name="date", type="datetime_immutable", nullable=false, options={"default"="now()"})
*/
private \DateTimeImmutable $date;
CollectionType
формы в html атрибут data-prototype<div data-prototype="
{% apply escape %}
{{ include('app/template/prototype/collection_form.html.twig', { 'form': form.attributes.vars.prototype }) }}
{% endapply %}"></div>
collection_form.html.twig
что-то такое:{{ form_widget(form.name) }}
{{ form_widget(form.product) }}
{{ form_widget(form.attribute) }}
data-prototype
, когда пользователь нажмёт кнопку добавить новый атрибут. При вставке вам нужно будет вручную выставлять индексы новым полям, по дефолту symfony засунет туда что-то вида form[__name__]
attributes[]
attributes[]
, то просто через foreach
создаёте форму.{% for row in form.attributes %}
{{ form_widget(row.name) }}
{{ form_widget(row.attribute) }}
{% endfor %}