Как я могу создать уникальный идентификатор в Symfony 4? - PullRequest
0 голосов
/ 27 ноября 2018

Я хочу создать уникальный идентификатор, поэтому в моем Controller.php я пишу это:

use Symfony\Component\Validator\Constraints\Uuid;

и позже в моей функции:

$unique_id = $this->uuid = Uuid::uuid4();

Но я получаюсообщение об ошибке:

Попытка вызова неопределенного метода с именем "uuid4" из класса "Symfony \ Component \ Validator \ Constraints \ Uuid".

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Только доктрина может автоматически генерировать uuid для вас при сохранении объектов в базе данных.Вы можете настроить его таким образом в вашей сущности.

/**
 *
 * @ORM\Id
 * @ORM\Column(name="id", type="guid")
 * @ORM\GeneratedValue(strategy="UUID")
 */
protected $id;

И это иногда является проблемой, когда вам нужен немедленный UUID для дальнейших инструкций в вашем коде, но вы не можете сохранить объект при этомточка времени.Таким образом, я получил хороший опыт использования этого пакета:

https://packagist.org/packages/ramsey/uuid

<?php

namespace YourBundle\Controller;

use Ramsey\Uuid\Uuid;

/**
 * Your controller.
 *
 * @Route("/whatever")
 */
class YourController extends Controller
{
    /**
     * @Route("/your/route", name="your_route")
     */
    public function yourFunction(Request $request)
    {
        try {
            $uuidGenerator = Uuid::uuid4();
            $uuid = $uuidGenerator->toString();
        } catch (\Exception $exception) {
            // Do something
        }
    }
}
0 голосов
/ 27 ноября 2018

Вы можете использовать ramsey/uuid из https://packagist.org/packages/ramsey/uuid

composer require ramsey/uuid

После установки:

use Ramsey\Uuid\Uuid;

function generateUid()
{
   return Uuid::uuid4();
}

Вы можете проверить документацию для получения дополнительной информации.

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