Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generates nullable columns incorrectly for HasMany relation #17

Open
roquie opened this issue Aug 6, 2021 · 2 comments
Open

Generates nullable columns incorrectly for HasMany relation #17

roquie opened this issue Aug 6, 2021 · 2 comments
Labels

Comments

@roquie
Copy link

roquie commented Aug 6, 2021

PHP version: 8.0
Package version: v1.0.10

How to reproduce:

  1. User entity:
<?php

declare(strict_types=1);

namespace App\Database;

use App\Database\Typecast\Uuid;
use App\Exception;
use App\Repository;
use App\Database\Column;
use Cycle\Annotated\Annotation as Cycle;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;

#[Cycle\Entity(
    repository: Repository\User::class
)]
class User
{
    use Column\Id;

    #[Cycle\Column(type: 'string(64)')]
    public string $username;

    #[Cycle\Relation\HasMany(target: Comment::class)]
    private Collection $comments;

    public function __construct(Uuid $id, string $username, string $password)
    {
        $this->id = $id;
        $this->username = $username;
        $this->comments = new ArrayCollection();
    }

    public function getComments(): Collection
    {
        return $this->comments;
    }
}
  1. Comment entity
<?php

declare(strict_types=1);

namespace App\Database;

use App\Repository;
use App\Database\Column;
use Cycle\Annotated\Annotation as Cycle;

#[Cycle\Entity(
    repository: Repository\Comment::class
)]
class AuthCode
{
    use Column\Id;

    #[Cycle\Relation\BelongsTo(target: User::class, nullable: true)]
    private ?User $user = null;

    #[Cycle\Column(type: 'string')]
    private string $text;

    public function setUser(?User $user): void
    {
        $this->user = $user;
    }

    public function setText(string $value): void
    {
        $this->text = $value;
    }

    public function getText(): string
    {
        return $this->text;
    }

    public function getUser(): ?User
    {
        return $this->user;
    }
}
  1. php app.php cycle:migrate -r

Results:
Screenshot 2021-08-06 at 11 30 17

P.S. Column Id Trait:

<?php
declare(strict_types=1);

namespace App\Database\Column;

use Cycle\Annotated\Annotation as Cycle;
use App\Database\Typecast\Uuid;

trait Id
{
    #[Cycle\Column(type: 'uuid', typecast: Uuid::class, primary: true)]
    private ?Uuid $id = null;

    public function getId(): ?Uuid
    {
        return $this->id;
    }
}

Results expected as nullable: true.

@roxblnfk roxblnfk added the type:bug Bug label Aug 6, 2021
@vvval
Copy link
Contributor

vvval commented Aug 6, 2021

probably this is the same problem as I faced in this issue cycle/orm#120

@butschster
Copy link
Contributor

Try to add nullable to comments relation

#[Cycle\Relation\HasMany(target: Comment::class, nullable: true)]
private Collection $comments;

@roxblnfk roxblnfk added this to Cycle Jan 4, 2022
@roxblnfk roxblnfk moved this to Backlog in Cycle Jan 4, 2022
@roxblnfk roxblnfk moved this from Backlog to Todo in Cycle Jan 11, 2022
@msmakouz msmakouz moved this from Todo to In Progress in Cycle Mar 29, 2024
@roxblnfk roxblnfk moved this from In Progress to Todo in Cycle May 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Todo
Development

No branches or pull requests

4 participants