как изменить тип столбца с помощью redbean?

я использую redbeanphp для работы с базой данных. я создаю таблицу и добавляю строку в свою базу данных, используя этот код:

$bean= R::dispence("esate") ; 
$bean->import(json_decode($data)) ; 
R::store($bean); 

в моей переменной $data у меня есть нулевое свойство такое как адрес, и когда redbeanphp сохраняет этот bean-компонент в базе данных, установите для этого типа свойства значение tinyint или другой тип . теперь, когда я создаю другой компонент со свойством address, mysql игнорирует мое значение и оставляет столбец address нулевым.

Может ли Redbean справиться с этой проблемой, и если ответ ДА, то как?


person Navid_pdp11    schedule 02.07.2015    source источник
comment
Вы всегда можете отредактировать схему базы данных, чтобы иметь нужный формат. redbeanPHP не изменит его, если в этом нет необходимости. Я также склонен использовать модели FUSEd с redbeanPHP, поэтому я всегда могу гарантировать, что все свойства bean-компонента имеют полезные значения по умолчанию, используя метод «dispense».   -  person Ryan Vincent    schedule 03.07.2015
comment
ваш комментарий был очень полезен ..... спасибо, дорогой райан   -  person Navid_pdp11    schedule 03.07.2015


Ответы (2)


Попробуй это

$book->title = 'Learn to fly';
$book->rating = 'good';
$book->published = '2015-02-15';
R::store( $book );
person Altay Mazlum    schedule 02.07.2015
comment
теперь я использую этот метод, но я бы не стал его использовать, потому что в моей таблице гораздо больше столбцов, и это невозможно для меня - person Navid_pdp11; 02.07.2015
comment
Ну, это единственный, кого я знаю. Попробовать другой язык? - person Altay Mazlum; 02.07.2015
comment
какая??? другой язык???? Ты шутишь, что ли? я создаю весь свой проект с помощью php и теперь меняю свой язык? в любом случае спасибо за ваше предложение: D - person Navid_pdp11; 02.07.2015
comment
Вам не нужно менять весь язык. :) Вы можете вставить в свой код другой язык. - person Altay Mazlum; 02.07.2015
comment
Неважно, я хотел бы помочь вам, хотя. Поищите в инете, может там что-то найдете. - person Altay Mazlum; 02.07.2015

Адаптация схем базы данных «на лету» — это основная функциональность RedBean, поэтому ваш вопрос действительно удивителен.

Видеть:

$foo = R::dispense('foo');
$foo->import(array(
    'address' => null,
));
$id = R::store($foo);

$bar = R::dispense('foo');
$bar->import(array(
    'address' => 'baz',
));
$id2 = R::store($bar);

var_dump(R::load('foo', $id)->export());

var_dump(R::load('foo', $id2)->export());

Выходы:

array(2) {
  ["id"]=>
  string(1) "1"
  ["address"]=>
  NULL
}
array(2) {
  ["id"]=>
  string(1) "2"
  ["address"]=>
  string(3) "baz"
}

Вам вообще нечего делать, чтобы он работал... Итак, вопрос в том, что вы сделали, чтобы он не работал? В частности, вы уверены, что не заморозили свою базу данных?

person rixo    schedule 03.07.2015
comment
дорогой риксо, моя база данных вообще не заморожена... когда я создаю строку с нулевым значением для адреса, она создает столбец с типом данных tinytext, а когда я добавляю еще одну строку с длинным адресом, она не сохраняет значение адресного столбца в базе данных - person Navid_pdp11; 03.07.2015
comment
Добавьте свой фактический код и данные к своему вопросу, наиболее вероятно, что в вашем коде есть проблема, которую вы не видели... А не в RedBean, который работает должным образом, как показывает мой пример. - person rixo; 03.07.2015