IT TIP

교리 2 + 부호없는 값

itqueen 2020. 11. 19. 22:42
반응형

교리 2 + 부호없는 값


unsigned integer교리 2에서 열 유형을 지정할 수 있습니까?


당신은 할 수 있지만 이식성을 잃을 것입니다. columnDefinition속성을 사용 하고로 설정하십시오 integer unsigned. 실제 코드는 사용중인 항목에 따라 다릅니다.

columnDefinition : 열 이름 뒤에서 시작하고 완전한 (이동 불가능!) 열 정의를 지정하는 DDL SQL 스 니펫. 이 속성을 통해 고급 RMDBS 기능을 사용할 수 있습니다. 그러나이 기능과 그 결과를주의 깊게 사용해야합니다. "columnDefinition"을 사용하면 SchemaTool이 더 이상 열의 변경 사항을 올바르게 감지하지 못합니다.


/ **
 * @ORM \ Column (name = "id", type = "integer", options = { "unsigned"= true})
 * /

이것에 대해 말하는 문서 (내가 본)는 없지만 작동합니다.

최신 정보

Yaml의 정의 (기본 키의 경우 2.4 기준)

id:
  type: integer
  options:
    unsigned: true

소수는 이러한 큰 숫자를 허용하고 SchemaTool을 유지할 수 있도록합니다. 스케일을 0으로 설정하기 만하면됩니다.

<?php
/**
 * @Column(type="decimal", precision=20, scale=0, nullable=false, unique=true)
 */
Protected $facebookId;

여기 에서 이유에 대한 전체 글을 확인 하십시오 . [편집] (링크가 작동하지 않음) 아래 기사를 붙여 넣었습니다. 어쨌든 저에 의해 작성되었습니다.)

부호없는 숫자가 너무 커서 뇌가 폭발 할 것입니다! 교리 2 포함

ORM에는 고유 한 문제가 있습니다. 일부 RDBMS가 지원하는 데이터 유형을 어떻게 사용하고 어쨌든 사용하도록 허용합니까? 교리 2와 부호없는 숫자에 관해서는 조금 게으르다.

내가 원하는 것은 64 비트 페이스 북 ID를 저장하는 것뿐입니다. 얼마나 힘들어요? 내 RDBMS는 mySQL이므로 서명되지 않은 bigint 만 있으면됩니다.

<?php
/**
 * @Column(type="bigint", nullable=false, unique=true, columnDefinition="unsigned")
 */
Protected $facebookId;

이것을 읽을 때까지 이것은 발견하고 멋지게 보입니다.

columnDefinition : 열 이름 뒤에서 시작하고 완전한 (이동 불가능!) 열 정의를 지정하는 DDL SQL 스 니펫. 이 속성을 통해 고급 RMDBS 기능을 사용할 수 있습니다. 그러나이 기능과 그 결과를주의 깊게 사용해야합니다. "columnDefinition"을 사용하면 SchemaTool이 더 이상 열의 변경 사항을 올바르게 감지하지 못합니다. 기본적으로이 기능을 사용하면 지원되지 않는 항목을 열 정의에 자유롭게 구성 할 수 있습니다. 기술적으로 지원되지 않는 부호없는 숫자 만들기! 내 개발 및 QA 배포 시스템은 SchemaTool에 크게 의존하고 있습니다. 이 미친 마을의 작은 덩어리에 대해 Doctrine과 sqlite3의 게으른 개발자의 조합에 감사드립니다.

이것은 즉시 Google 검색을 시작했습니다. 나는 내가 할 필요가 없다면 생각하는 것을 좋아하지 않는다. 내가 뭘 찾았 지? 모두가 varchars를 사용하고 있습니다. VARCHARS!?!? 나는 심장 마비를 겪었다. 그건 용납 할 수없는 일이었습니다.

따라서 십진수를 입력합니다. 그것은 완벽. 저장소 크기는 가변적이며 바이너리로 저장되므로 인덱싱이 매우 빠릅니다. 십진수 정밀도를 0으로 설정하고 보일로 설정했습니다. ORM은이를 모든 RDBMS로 이식 할 수 있으며 지원되지 않는 서명 / 서명되지 않은 문제에 대해 신경 쓰지 않아도 될만큼 크고 매우 빠릅니다. decimal (20,0)은 우리의 페이스 북 크기 인 1,800 경 400 조 760 억 770 억 770 억 7000 억 550 만 6 백 15 십억을 아주 멋지게 처리해야합니다.

<?php
/**
 * @Column(type="decimal", precision=20, scale=0, nullable=false, unique=true)
 */
Protected $facebookId;

교리 1 문서교리 2 문서 는 다음 같은 방법으로 할 수 있다고 말했습니다.

PHP 주석 :

/**
 * @Column(type="integer", name="some_field" options={"unsigned":true})
 */
protected $someField;

Yaml : ( 문서 참조 )

MyEntity:
  fields:
    someField:
      type: integer
      column: some_field
      options:
        unsigned: true

이것이 시간을 절약하는 데 도움이되기를 바랍니다.)

참고 URL : https://stackoverflow.com/questions/7692686/doctrine-2-unsigned-value

반응형