私のロジックとしては、uniq inviteコードをいくつかのフォーマット(3桁と2文字)で生成する必要があります。 Ramsey uuid
を使用する前に、これは非常に複雑な招待コードで、覚えておいてください。自動的に何らかの形式で招待コードを生成する正しい方法、例 - A123B
?フォーマットによるエンティティのsymfony固有のフィールド
私はユニークフィールドのエンティティユーザinviteCode
を持っています。私は新しいエンティティを作成するときに、私はフォーマットにより自動uniqのランダムコードを生成したい - 私はそのような何かを発見したthree digits and two letters
/**
* @ORM\Table(name="users")
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
* @AssertBridge\UniqueEntity(
* groups={"registration"},
* fields="inviteCode",
* errorPath="not valid",
* message="This inviteCode is already in use."
*)
*/
class User extends AbstractUser implements UserInterface
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=500, unique=true)
* @Annotation\SerializedName("_invite_code")
*/
private $inviteCode;
private function calculateReference($number)
{
$multipliers = array(7,3,1);
$length = strlen($number);
$numberArr = str_split($number);
$sum = 0;
for ($i = $length - 1; $i >= 0; --$i)
{
$sum += $numberArr[$i] * $multipliers[($length - 1 - $i) % 3];
}
return $number.(10 - $sum % 10) % 10;
}
、関数IDを持つcalculateReference
をテーブルから最大のidを呼び出します最初に、しかし、私は規制の長さ、例のみ6記号
フォーマットでいくつかのハッシュを生成するための良い方法は、three digits and two letters
?私のプロジェクトで
これは本当ですが、満足していない、2文字と3桁のフォーマットが必要です –