2016-10-06 1 views
1

Migrations Plugin과 Postgresql DB가있는 CakePhp 2.7을 실행 중입니다. 'number'유형의 필드를 만들고 길이 15,4 (배율 15, 정밀도 4 - 또는 임의의 길이)를 지정하면 해당 정밀도 및/또는 배율로 필드가 실제로 생성되지 않습니다.CakePHP 마이그레이션 - 규모와 정밀도를 지정하는 방법

  ... 
'license_fee' => array(
    'type' => 'number', 
    'null' => true, 
    'length' => '15,6', 
    'default' => 0 
), 
     ... 

필드는 올바른 유형 (숫자)하지만 스케일/정밀 여기서 생성 된 필드의 포스트 그레스 설명하지와 함께 생성된다.

license_fee    | numeric | default 0 

은 내가 볼 것으로 예상되었다이

license_fee    | numeric(15,6) | default 0 

이 나는 ​​또한 '유형'=> '진수'를 사용하려고했지만 같은 일이있다. 이 플러그인은 Migrations 플러그인에서 지원하지 않을 수 있지만 실제로 진행되는 상황을 아는 사람이 있는지 알고 싶습니다.

+1

내가 2.x는 플러그인이 될 수 없습니다 두려워하고 모든 사람들을 지원할만큼 강력가되지 않습니다 : http://docs.phinx.org/en/latest/migrations.html

를 만들려면 사례. 3.x Migrations 플러그인에서 이것은 모두 설계 상 고정되어 있습니다. 여기서 전환 할 수 있습니다. 방금 [2.x 응용 프로그램에서 3.x Migrations을 사용하는 방법]에 대한 게시물을 발표했습니다. (http://www.dereuromark.de/2016/10/03/use-3-x-migrations-for-your-2 -x-cakephp-app)가 있습니다. – mark

답변

1

추가 조사와 Cake Development Corp.의 도움을받은 후 정밀도와 배율을 지정하는 올바른 방법은 시도했던 것처럼 "길이"가 아닌 "길이"를 사용하는 것입니다. 그래서 다음과 같이해야합니다 :

'license_fee' => array(
    'type' => 'number', 
    'null' => true, 
    'limit' => '15,6', //this is where I was wrong by using length 
    'default' => 0 
), 

이것은 또한 작동합니다 '유형'실제로 같은 데이터 형이며, => '진수'를 사용합니다. 최종 결과는 예상대로입니다.

license_fee    | numeric(15,6) | default 0 

나는이 기능이 유용 할 것으로 기대합니다.

1

여기 찾았 소수 (9,3)

$table->addColumn('distance', 'decimal', [ 
      'default' => null, 
      'null' => false, 
      'precision'=>9, 
      'scale'=>3 
     ]); 
+0

이 답변은 내가 사용하고있는 CakePHP 프레임 워크에는 적용되지 않습니다. – atomCode

+0

이것은 CakePHP 3.5와 MySQL에 대한 정답입니다. 받아 들여진 응답은 저를 위해 작동하지 않았다. –

+0

이것은 실제로 정답입니다. 정밀도와 스케일은 문자열 대신 정수 여야합니다. – jurrieb

관련 문제