Symfony 4:试图从错误的命名空间调用函数

0 namespaces symfony symfony4

我是 symfony 的新手。

我正在尝试学习一些教程,但我坚持使用 ORM

我使用以下命令生成了一个实体:

php bin/console make:entity
Run Code Online (Sandbox Code Playgroud)

我的实体有一个字段“名称”,因此有一个函数 setName()

我用以下命令生成了一个控制器:

php bin/console make:controller TestController
Run Code Online (Sandbox Code Playgroud)

在此控制器中,我尝试注册一个新条目,但出现以下错误:

试图从命名空间“App\Controller”调用函数“setName”。

我做错了什么?

测试控制器.php:

<?php

namespace App\Controller;

use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use App\Entity\Team;

class TestController extends Controller
{
    /**
     * @Route("/test", name="test")
     */
    public function index()
    {
        $entityManager = $this->getDoctrine()->getManager();
        $team = new Team();
        $team.setName("Marvels 6");

        $entityManager->persist($team);
        $entityManager->flush();

        return $this->json([
            'message' => 'Welcome to your new controller!',
            'path' => 'src/Controller/TestController.php',
        ]);
    }
}
Run Code Online (Sandbox Code Playgroud)

团队.php:

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\TeamRepository")
 */
class Team
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

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

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Poule", inversedBy="teams")
     */
    private $poule;

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

    public function getName(): string
    {
        return $this->name;
    }

    public function setName(string $name): self
    {
        $this->name = $name;

        return $this;
    }

    public function getPoule(): Poule
    {
        return $this->poule;
    }

    public function setPoule(Poule $poule): self
    {
        $this->poule = $poule;

        return $this;
    }
}
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 5

那是你复制粘贴的代码吗?

$team.setName("Marvels 6");
Run Code Online (Sandbox Code Playgroud)

应该是:

$team->setName("Marvels 6");
Run Code Online (Sandbox Code Playgroud)