Застрял с SQL запрос в Symfony 4 - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь перечислить 3 самых популярных пользователей в таблице.

Вот сущности, которые у меня есть:

$ Пользователь, $ Post, $ PostLike.

Пользователь может ответить на вопрос, опубликовав сообщение $, каждое сообщение может нравиться или не нравиться пользователям.

В $ Post у меня есть: Пользователь может опубликовать вопрос, на который отвечает сообщение. В $ PostLike у меня есть: пользователь, который понравился или не понравился, пост и логическое значение (1, если нравится, 0 за неприязнь)

Так что я думаю, что могу получить все PostLike, где логическое == 1, то сгруппируйте их по $ Post, затем сгруппируйте результат по User и получите длину всех лайков или не лайков, которые получает пользователь.

Я застрял с запросом sql.

Кто-нибудь может мне помочь, пожалуйста?

Вот код сущности:

class StackUser
{

private $id;

/**
 * @ORM\Column(type="string", length=255)
 */
private $username;

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

public function getUsername(): ?string
{
    return $this->username;
}

public function setUsername(string $username): self
{
    $this->username = $username;

    return $this;
}
}

.

class Post
{

private $id;

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="posts")
 * @ORM\JoinColumn(nullable=false)
 */
private $user;

/**
 * @ORM\Column(type="text")
 */
private $ThePostHimself;

/**
 * @ORM\ManyToMany(targetEntity="App\Entity\PostLike", mappedBy="Post")
 */
private $postLikes;

public function __construct()
{
    $this->postLikes = new ArrayCollection();
}

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

public function getUser(): ?User
{
    return $this->user;
}

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

    return $this;
}

public function getThePostHimself(): ?string
{
    return $this->ThePostHimself;
}

public function setThePostHimself(string $ThePostHimself): self
{
    $this->ThePostHimself = $ThePostHimself;

    return $this;
}

/**
 * @return Collection|PostLike[]
 */
public function getPostLikes(): Collection
{
    return $this->postLikes;
}

public function addPostLike(PostLike $postLike): self
{
    if (!$this->postLikes->contains($postLike)) {
        $this->postLikes[] = $postLike;
        $postLike->addPost($this);
    }

    return $this;
}

public function removePostLike(PostLike $postLike): self
{
    if ($this->postLikes->contains($postLike)) {
        $this->postLikes->removeElement($postLike);
        $postLike->removePost($this);
    }

    return $this;
}
}

.

class PostLike
{
/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 */
private $id;

/**
 * @ORM\Column(type="boolean")
 */
private $LikeDislike;

/**
 * @ORM\ManyToMany(targetEntity="App\Entity\Post",    inversedBy="postLikes")
 */
private $Post;

public function __construct()
{
    $this->Post = new ArrayCollection();
}

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

public function getLikeDislike(): ?bool
{
    return $this->LikeDislike;
}

public function setLikeDislike(bool $LikeDislike): self
{
    $this->LikeDislike = $LikeDislike;

    return $this;
}

/**
 * @return Collection|Post[]
 */
public function getPost(): Collection
{
    return $this->Post;
}

public function addPost(Post $post): self
{
    if (!$this->Post->contains($post)) {
        $this->Post[] = $post;
    }

    return $this;
}

public function removePost(Post $post): self
{
    if ($this->Post->contains($post)) {
        $this->Post->removeElement($post);
    }

    return $this;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...