【问题标题】:Symfony 3 Attempted to load class "LessonRepository" from namespace "DrumLessonBookingApp\DrumLessonBookingBundle\Repository"Symfony 3 尝试从命名空间“DrumLessonBookingApp\DrumLessonBookingBundle\Repository”加载类“LessonRepository”
【发布时间】:2017-04-15 11:07:43
【问题描述】:

在尝试为我的实体课程获取默认存储库类时,我不断收到以下错误:

尝试从命名空间“DrumLessonBookingApp\DrumLessonBookingBundle\Repository”加载类“LessonRepository”。 您是否忘记了另一个命名空间的“使用”语句?

我使用与 User 实体完全相同的方法,效果非常好。

我的控制器的代码是:

namespace DrumLessonBookingApp\DrumLessonBookingBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 
use DrumLessonBookingApp\DrumLessonBookingBundle\Entity\User; 
use DrumLessonBookingApp\DrumLessonBookingBundle\Entity\Lesson; 
use DrumLessonBookingApp\DrumLessonBookingBundle\Repository;


class LoginController extends Controller
{
    public function displayAction()
    {
        return $this->render('DrumLessonBookingAppDrumLessonBookingBundle:Default:login.html.twig'); 
    }

    public function processloginAction(Request $request)
    {
        $doctrine = $this->getDoctrine()->getManager(); 
        $email = $request->get('email'); 
        $pwd = $request->get('pwd'); 


        $user = $doctrine->getRepository('DrumLessonBookingAppDrumLessonBookingBundle:User')->findOneBy(array('email' => $email,'password' => $pwd));


        if($user->getAdministrator() == 1)
        {
            $session = $this->get('session'); 
            $session->set('loggedin', true);

            $lessons = $doctrine->getRepository('DrumLessonBookingAppDrumLessonBookingBundle:Lesson')->findAll(); 


            return $this->render('DrumLessonBookingAppDrumLessonBookingBundle:Default:dashboard.html.twig', array("lessons" => $lessons));   
        }
        else {
            return new Response('doctrine not working'); 
        }
    }
}

我也很难使用教义生成自定义 Respository 类,因此尝试自己为 User 实体创建一个,但 symfny 无法识别或识别自定义方法。见下文:

namespace DrumLessonBookingApp\DrumLessonBookingBundle\Repository; 
use Doctrine\ORM\EntityRepository; 
use DrumLessonBookingApp\DrumLessonBookingBundle\Entity\User; 

class UserRepository extends EntityRepository
{
    public function loginUser($email, $password)
    {
        $entityM = $this->getEntityManager(); 
        $dql = $entityM->createQuery(
            'SELECT u FROM DrumLessonBookingAppDrumLessonBookingBundle:User u
                WHERE u.email = :email 
                AND WHERE u.password = :pwd');

        $dql->setParameter('email', $email); 
        $dql->setParameter('pwd', $password); 

        $user = $query->getResult(); 
        return $user; 
    }
}

我搜索了类似的问题,但找不到解决方案,请有人帮忙!

我的课程实体

namespace DrumLessonBookingApp\DrumLessonBookingBundle\Entity; 
use Doctrine\ORM\Mapping as ORM; 

/**
* @ORM\Entity
* @ORM\Table(name="lessons")
* @ORM\Entity(repositoryClass="DrumLessonBookingApp\DrumLessonBookingBundle\Repository\LessonRepository")
 * */
   class Lesson {

   /**
 * @ORM\Column(type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 * */
private $id; 

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

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

/**
 * @ORM\ManyToOne(targetEntity="User", inversedBy="lessons")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 * */
private $user; 

/**
 * Get id
 *
 * @return integer
 */
public function getId()
{
    return $this->id;
}

/**
 * Set date
 *
 * @param \DateTime $date
 *
 * @return Lesson
 */
public function setDate($date)
{
    $this->date = $date;

    return $this;
}

/**
 * Get date
 *
 * @return \DateTime
 */
public function getDate()
{
    return $this->date;
}

/**
 * Set time
 *
 * @param \DateTime $time
 *
 * @return Lesson
 */
public function setTime($time)
{
    $this->time = $time;

    return $this;
}

/**
 * Get time
 *
 * @return \DateTime
 */
public function getTime()
{
    return $this->time;
}


/**
 * Set User
 * 
 * @param object
 * @return Lesson
 * */
public function setUser(User $user)
{
    $this->user = $user;
    return $this;  
}

   /**
 * Set User
 * 
 * 
 * @return User
 * */
public function getUser($user)
{
    return $this->user;   
}

}

我的自定义课程存储库中没有任何内容,但它肯定仍应从它扩展的 entityRepository 中找到诸如 findAll() 等方法

【问题讨论】:

  • 能否请您展示实体:课程?
  • 和你的LessonRepository..
  • 我已编辑问题以包含课程实体。感谢您抽出宝贵时间提供帮助

标签: php symfony frameworks doctrine


【解决方案1】:

您似乎有多个问题要回答一个问题

你需要在你的实体类中引用它的repositoryClass:

/**
 * USER
 *
 * @ORM\Table(name="users")
 * @ORM\Entity(repositoryClass="DrumLessonBookingApp\DrumLessonBookingBundle\Repository\UserRepository")
 */
class User
{

我猜您在课程实体中也缺少相同的东西。 然后您不必添加“使用”语句

【讨论】:

  • 我已经在这两个实体中拥有了,这就是为什么我不明白为什么它们不起作用。
  • 这里是我的用户实体类<?php namespace DrumLessonBookingApp\DrumLessonBookingBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; /** * @ORM\Entity * @ORM\Table(name="Users") * */ /* * @ORM\Entity(repositoryClass="DrumLessonBookingApp\DrumLessonBookingBundle\Repository\UserRepository") * */ Class User { 的开始
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-30
  • 1970-01-01
  • 2015-03-29
  • 2017-03-23
  • 2021-10-03
  • 1970-01-01
相关资源
最近更新 更多