symfony3,缺少论证1的论点 orm entityrepository :: __ construct(),



我正在制作我的第一个小应用程序,一个简单的博客。

现在,我一直在使用Symfony和Doctrine的文档,并想预先完成一个简单的初学者任务:显示JSON编码的简单表

但是我似乎无法与学说相处。

这是我的数据(与显示值只能显示的视图与众不同):

//AppBundle/Controller/DefaultController.php
<?php
namespace AppBundleController;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SymfonyBundleFrameworkBundleControllerController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use AppBundleEntityPost;
use DoctrineCommonPersistence;
class DefaultController extends Controller
{
    /**
     * @Route("/", name="homepage")
     */
    public function indexAction(Request $request)
    {
        $database = new Post();
        $output = $database->findAll();
        return $this->render('default/index.html.twig', [
            'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
            'x' => json_encode($output)
        ]);
    }
}

<?php
//AppBundle/Entity/Post.php
namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
use DoctrineORMEntityRepository;
/**
* @ORMEntity
* @ORMTable(name="sqltest")
*/
class Post extends EntityRepository
{
    //The post for now uses data from a temponary test table
    /**
    * @ORMColumn(type="integer")
    * @ORMId
    * @ORMGeneratedValue(strategy="AUTO")
    */
    private $id;
    /**
    * @ORMColumn(type="string", length=100)
    */
    private $name;
    /**
    * @ORMColumn(type="integer", scale=2)
    */
    private $number;

    /**
     * Get id
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }
    /**
     * Set name
     * @param string $name
     * @return Post
     */
    public function setName($name)
    {
        $this->name = $name;
        return $this;
    }
    /**
     * Get name
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }
    /**
     * Set number
     * @param integer $number
     * @return Post
     */
    public function setNumber($number)
    {
        $this->number = $number;
        return $this;
    }
    /**
     * Get number
     * @return integer
     */
    public function getNumber()
    {
        return $this->number;
    }
}

问题是当我尝试显示网站时,我会得到此例外

警告:缺少参数1 Doctrine orm EntityRepository :: __ construct(),称为 C: Users Alan Desktop Symf-Blog Src AppBundle Controller DefaultController.php 在第19行上定义

有问题的行是 $database = new Post();

的一条线

我在这方面非常新,并且意识到响应非常简单,我只是看不到。回答时,请提供和解释,即使是死兔子也可以理解的。

非常感谢您的耐心配合。

ps:也解释了我所看到的$em变量是什么,我从何处获得的是不错的

如果您想要自定义DB功能的存储库类,那么这是正确的方法:

namespace AppBundleEntity;    
use DoctrineORMEntityRepository;
class PostRepository extends EntityRepository
{
    public function findAll()
    {
        return $this->findBy(array(), array('id' => 'DESC', 'createdAt' => 'DESC'));
    }  
   ....
}

然后在您的控制器中:

$em = $this->getDoctrine()->getManager(); 
$entities = $em->getRepository("AppBundle:Post")->findAll();

删除注释(它们属于实体)。还要注意@James_Bond告诉您的内容。尝试!

如文档中所述,您可以通过Doctrine Entity Manager访问自定义存储库类。

$em = $this->getDoctrine()->getManager();  
$posts = $em->getRepository('YourBundle:Post')->findAll();

还将实体定义与存储库定义混合在一起,这不是一个好主意。

请参阅Symfony中的学说文档以获取适当的用法。

相关内容

  • 没有找到相关文章

最新更新