Проблема следующая...
Всё как в мануале, возможно есть какие-то несоответствия, мне хотелось бы их найти 

Тут как бы мусолить нечего 
вот код 
...
    /**
     * @ORM\ManyToMany(targetEntity="App\Model\Extras\Extras")
     * @ORM\JoinTable(
     *     name="product_extras", joinColumns={
     *          @ORM\JoinColumn(name="product_id", referencedColumnName="id")},
     *     inverseJoinColumns={
     *          @ORM\JoinColumn(name="extras_id", referencedColumnName="id")}
     * )
     */
    private $extras;
    /**
     * Product constructor.
     */
    public function __construct()
    {
        $this->extras = new ArrayCollection();
    }
    /**
     * @param Extras $extras
     */
    public function addExtras(Extras $extras = null): void
    {
        $this->extras->add($extras);
    }
Далее...
/** @var Extras $item */
        foreach ($this->extrasRepository->findBy(["id" => $extras_criteria]) as $item){
            $product->addExtras($item);
        }
Ну такая банальщина, что даже стыдно.
Доктрина от меня требует, что бы $product->extras был массивом (ArrayCollection)
Что не так?