Проблема с номером кредитной карты RedBean PHP

Недавно я начал использовать Redbean PHP. Так что я не очень хорошо разбираюсь в том, как это работает. До сих пор мне нравится, как просто он делает вещи для меня. Но сегодня я столкнулся с проблемой. Мне нужно хранить номера кредитных карт в таблице. Но как только я сохраняю bean-компонент, номер карты меняется на значение с плавающей запятой (десятичное число).

«1234123412341234» сохраняется как «1.234123412341234e15»

Тип данных «двойной», созданный Redbean, но я дал его в виде строки. Это немного странно для меня, я не очень разбираюсь ни в SQL, ни в PHP. Есть ли способ переопределить, как Redbean создает table. Так что кто-нибудь, пожалуйста, помогите мне. Я что-то пропустил здесь. Ниже приведен мой соответствующий код, а используемая структура — Codeigniter.

Переменная данных

$data = array(
    'card_name' => 'Shiva Kumar Avula',
    'card_no' => '1234123412341234',
    'card_issuer' => 'Visa',
    'card_cvv' => '123',
    'card_exp_month' => 12,
    'card_exp_year' => 2020
);

$card = $this->card_model->create_card($data, TRUE); // Making it primary

Функция модели

public function create_card($data, $is_primary = FALSE)
{
    $card = R::dispense('card');

    $card->name = $data['card_name'];
    $card->number = $data['card_no'];
    $card->issuer = $data['card_issuer'];
    $card->cvv = $data['card_cvv'];
    $card->exp_month = $data['card_exp_month'];
    $card->exp_year = $data['card_exp_year'];
    $card->is_primary = $is_primary;
    $card->is_verified = 0;
    $card->ts_created = $this->ts_sql;
    $card->ts_modified = $this->ts_sql;

    $id = R::store($card);
}

Снимок моего вывода в phpmyadmin введите здесь описание изображения

Снимок, показывающий тип данных введите здесь описание изображения


person Shiva Avula    schedule 26.03.2014    source источник
comment
Число такой длины на самом деле является строкой. Вы не собираетесь заниматься математикой.   -  person John Conde    schedule 26.03.2014
comment
@JohnConde В этом проблема, я не, может быть, redbean переводит его в поплавок.   -  person Shiva Avula    schedule 26.03.2014


Ответы (1)


Вы можете установить мета-свойство bean-компонентов для number в string.

$card->setMeta("cast.number", "string"); 

Это сохранит любые значения $card->number как varchar.
Дополнительную информацию см. в внутренних компонентах RedBean.

person kekub    schedule 26.03.2014
comment
Работает отлично. Извините, я был достаточно ленив, чтобы просмотреть всю документацию за день. Это сильный стресс. Спасибо вам за помощь. - person Shiva Avula; 27.03.2014