2017-02-11 12 views
0

, 나는 그것이 문자열이 아닌 double 형처럼 저장할 수 있으며, 숫자의 문자열을 가지고? 내 예를 들어 다음이며,이 작동하지 않습니다 때어떻게하면 redbeanphp의 열 유형을 변경할 수 있습니까? 나는 RedBeanPHP을 사용하고

$participant = R::dispense('participants'); 
    $participant->setMeta("participants.number","string"); 
    $participant->number = $number; 
    R::store($participant); 
+0

현재 이용로 number_format ($ 참가자 -> 번호, 0 '', '')을 용액 –

답변

0

RedBean은 사용자가 입력 한 데이터에 대해 올바른 열 유형을 자동으로 추측하려고 시도합니다. 그러나 열을 축소하지는 않습니다 (예 : TEXT에서 INTEGER까지). 경우에만 넓혀집니다 (예 : INTEGER에서 TEXT까지).

개발 중에 데이터베이스 열이 TEXT 인 경우 string을 삽입하고 다시 삭제하여 RedBean을 "속여"열 유형 TEXT을 만들 수 있습니다.

예를 들어, 초기화 스크립트의 몇 가지 유형으로이 코드를 넣어 : 앞서 언급 한 바와 같이 다시 번호 문자열에 비해 아무것도 넣지 않을 경우에도

$participant = R::dispense('participants'); 
$participant->number = 'not a number'; 
R::store($participant); 
R::trash($participant); 

// Column 'participants.number' is now of type TEXT 

이 RedBean이 INTEGER에 열을 축소하지 않습니다.

반면 개발 단계에서 중요하지 않은 경우, 프로덕션에 배치하기 전에 데이터베이스를 고정하고 데이터베이스 관리 프로그램에서 수동으로 열 유형을 TEXT으로 변경할 수 있습니다.

1

Redbean check 속성 주어진 값이 열에 적합한 유형을 설정, 나는, 동결 옵션을 해제 할 때마다 함께 작업 할 것을 권장하지만 것 뭔가를 바꿀 필요가 있습니다. 나는 당신이 정말 예를 들어, 테이블에 일부 변경을 수행해야하는 경우에 동결을 켜 의미 :

// the false param will disable db changes 
R::setup('dns', 'user', 'pass', false);changes (freeze option) 

//... 
//... let's imagine you have some code here 
//... 

R::freeze(false); 

$participant = R::dispense('participants'); 
$participant->number = 'intert any string'; // need to set field to string type 
R::store($participant); 

R::freeze(true); 

$participant->number = '99.99'; 
R::store($participant); 

을 내가 이제까지 가장 좋은 것은 아니라는 것을 알고,하지만 당신은 당신이 필요로 할 때 그것을 설정해야 DB 구조에서 뭔가를 바꿀 수 있습니다. 기본적으로 프로덕션 환경에서는 항상 꺼야합니다.