테이블의 비트 필드를 설정하는 데 문제가 있습니다. phalcon이 문자열 ('0')로 바인딩하기 때문에 확인 된 비트 필드를 설정하려는 경우 최종 결과는 확인됩니다. = 1. 모든 비트 필드를 tinyint (1)로 변경할 수는 있지만 많은 테이블에 많은 비트 필드가 있기 때문에 너무 많은 시간이 걸릴 것입니다.phalcon은 비트 필드를 문자열로 처리합니다.
는 phalcon 문서에서 아래 바인딩 타입을 지정하기위한 예있다 :
<?php
use \Phalcon\Db\Column;
//Bind parameters
$parameters = array(
"name" => "Robotina",
"year" => 2008
);
//Casting Types
$types = array(
"name" => Column::BIND_PARAM_STR,
"year" => Column::BIND_PARAM_INT
);
// Query robots binding parameters with string placeholders
$robots = Robots::find(array(
"name = :name: AND year = :year:",
"bind" => $parameters,
"bindTypes" => $types
));
하지만이 데이터를 검색한다. 저장 방법으로 데이터를 저장하는 것과 동일한 일을 할 수 있는지 알고 싶습니다. 예를 들어 beforeSave() 메소드에서 metaData를 비트 유형으로 검사하고 이러한 데이터를 Int 값으로 바인드하는 것과 같은 작업을 수행하십시오.
또한 '0'대신 'b0'을 사용하려고했지만 효과가 없습니다.
감사 값을 변환하는 beforeValidationOnSave 및 afterFetch을 사용할 수 있습니다 당신은 당신의 대답을 위해서. 나는 이미 주석을 검사했지만 작동하지 않았다. 먼저 @var 정수 주석을 사용했고 대답 후에 @Column (type = "integer")으로 변경했지만 결과는 동일했다. beforeValidation을 사용하는 유일한 방법 일 수 있습니다. 또한 작동하지 않는 경우 데이터베이스 테이블에서 열 유형을 변경하십시오. – Soheil