Идентификатор id отсутствует для запроса PrManagerBundle\Entity\eb_user

я пытаюсь удалить объект по идентификатору из моей базы данных, используя <button class = "btn btn-danger" (click) = "removeUser()"> Delete</button></td> в интерфейсе, но ссылка не работает. Я получаю сообщение об ошибке:

The identifier id is missing for a query of PrManagerBundle\Entity\eb_user.

вот моя сущность:

namespace PrManagerBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * eb_user
 *
 * @ORM\Table(name = "eb_user")
 * @ORM\Entity(repositoryClass = "PrManagerBundle\Repository\eb_userRepository")
 */
class eb_user
{
    /**
     * @var int
     *
     * @ORM\Column(name = "id", type = "integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy = "AUTO")
     */
    private $id;

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

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

/**
 * @var int
 *
 * @ORM\Column(name = "tel", type = "string", nullable = true)
 */
private $tel;

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

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

/**
 * @ORM\ManyToOne(targetEntity = "PrManagerBundle\Entity\eb_role", inversedBy = "eb_user")
 */
private $x_eb_role;

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

/**
 * Set nom
 *
 * @param string $nom
 *
 * @return eb_user
 */
public function setNom($nom)
{
    $this->nom = $nom;

    return $this;
}

/**
 * Get nom
 *
 * @return string
 */
public function getNom()
{
    return $this->nom;
}

/**
 * Set prenom
 *
 * @param string $prenom
 *
 * @return eb_user
 */
public function setPrenom($prenom)
{
    $this->prenom = $prenom;

    return $this;
}

/**
 * Get prenom
 *
 * @return string
 */
public function getPrenom()
{
    return $this->prenom;
}

/**
 * Set tel
 *
 * @param integer $tel
 *
 * @return eb_user
 */
public function setTel($tel)
{
    $this->tel = $tel;

    return $this;
}

/**
 * Get tel
 *
 * @return int
 */
public function getTel()
{
    return $this->tel;
}

/**
 * Set mail
 *
 * @param string $mail
 *
 * @return eb_user
 */
public function setMail($mail)
{
    $this->mail = $mail;

    return $this;
}

/**
 * Get mail
 *
 * @return string
 */
public function getMail()
{
    return $this->mail;
}

/**
 * Set domaine
 *
 * @param string $domaine
 *
 * @return eb_user
 */
public function setDomaine($domaine)
{
    $this->domaine = $domaine;

    return $this;
}

/**
 * Get domaine
 *
 * @return string
 */
public function getDomaine()
{
    return $this->domaine;
}
/**
 * Set xEbRole
 *
 * @param \PrManagerBundle\Entity\eb_role $xEbRole
 *
 * @return eb_user
 */
public function setXEbRole(\PrManagerBundle\Entity\eb_role $xEbRole = null)
{
    $this->x_eb_role = $xEbRole;

    return $this;
}

/**
 * Get xEbRole
 *
 * @return \PrManagerBundle\Entity\eb_role
 */
public function getXEbRole()
{
    return $this->x_eb_role;
}

}

контроллер:

public function removeAction(Request $request)
    {
        $em = $this->getDoctrine()->getManager();
        $userInfo = json_decode( $request->request->get("user") );
        $eb_user = $em->getRepository('PrManagerBundle:eb_user')->find($request->request->get('id'));
        $em->remove($eb_user);
        $em->flush(); 
        $em->clear();   
        return $this->returnJsonResponse($eb_user);

        /* $repository = $this->getDoctrine()->getRepository(eb_user::class);
        $editUser = $repository->find($id);
        return $this->returnJsonResponse($editUser);*/
    }

и маршрутизация здесь:

pr_manager_remove: путь: /пользователь/удалить/{id} значения по умолчанию: {_controller: PrManagerBundle:User:remove}

На самом деле идентификатор не найден. Я ожидаю, что ссылка работает правильно

Контроллер не находит идентификатор из вашего запроса. Пожалуйста, поделитесь соответствующим кодом внешнего интерфейса (html/js).

Sondre Edvardsen 07.05.2019 09:31

@SondreEdvardsen вот компонент, в котором я вызвал сервис removeUser(id){ this.createService.removeUser(id) .subscribe(); } это create service.ts removeUser(id: number): Observable<{}> { return this.http.delete(Statique.DELETE_USER+'/'+id); }

dakim236 07.05.2019 11:23

@SondreEdvardsen это Statique.DELETE_USER = 'http://localhost/project-manager/backend/web/app_dev.php/us‌​er/remove' в бэкэнде. Я настроил маршрут следующим образом: pr_manager_remove: path: /user/remove/{id} defaults: { _controller: PrManagerBundle:User:remove }

dakim236 07.05.2019 11:25

@SondreEdvardsen, а вот HTML: <table class = "table table-striped; mat-elevation-z8" style = "width: 100%;"> <tr> <th>#</th> <th>Nom</th> <th>Prénom</th </tr> <tr *ngFor = "let user of users"> <td>{{user.id}}</td> <td>{{user.nom}}</td> <td><button class = "btn btn-danger" (click) = "removeUser()"> Delete</button></td> </tr>

dakim236 07.05.2019 11:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
725
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы передаете userId в качестве параметра маршрута. Вот почему он отсутствует в запросе.

Идентификатор должен быть передан в качестве аргумента функции PrManagerBundle:User:remove.

/**
 * @Route("/user/remove/{id}", name = "pr_manager_remove")
 */
public function remove($id)
{
    ...
    $eb_user = $em->getRepository('PrManagerBundle:eb_user')->find($id);
    ...
}

Я получаю другую ошибку: An exception occurred while executing 'SELECT t0.id AS id_1, t0.nom AS nom_2, t0.prenom AS prenom_3, t0.tel AS tel_4, t0.mail AS mail_5, t0.domaine AS domaine_6, t0.x_eb_role_id AS x_eb_role_id_7 FROM eb_user t0 WHERE t0.id = ?' with params ["id"]: SQLSTATE[22P02]: Invalid text representation: 7 ERREUR: syntaxe en entrée invalide pour l'entier : « id »

dakim236 07.05.2019 12:09

Теперь параметр выглядит как «id» в виде строки, а не значения переменной $id. Пожалуйста, дважды проверьте наличие опечаток и поделитесь кодом контроллера, если вы все еще получаете ошибки.

Sondre Edvardsen 07.05.2019 12:32

Я изменил $id на ('id') в контроллере, но ничего не изменилось. вот UserController: class UserController extends Controller { public function removeAction($id) { $em = $this->getDoctrine()->getManager(); $eb_user = $em->getRepository('PrManagerBundle:eb_user')->find('id'); $em->remove($eb_user); $em->flush(); $em->clear(); return $this->returnJsonResponse($eb_user); } }

dakim236 07.05.2019 12:52
->find('id') должно быть ->find($id)
Sondre Edvardsen 07.05.2019 13:02

Другие вопросы по теме