RedBean (ORM) Получить Bean с его отношениями, как и другие Bean

Я храню продукт Bean таким образом:

$product = R::dispense( 'product' ); 
$product->name = $_POST['name']; 
$product->description = $_POST['description']; 
$product->price = $_POST['price']; 
$product->category = $_POST['category']; 
R::store( $product ); 

Как я могу указать, что атрибут категории является ссылкой id (или FK) на Bean категории? Я хочу получить категорию Bean следующим образом:

$products = R::find( 'product' ); 
foreach( $products as $product ) 
   $productCategory = $product->category->name;

person mauriblint    schedule 04.05.2012    source источник
comment
СОВЕТ! Вместо того, чтобы устанавливать каждое свойство по отдельности, вы можете автоматически заполнить bean-компонент массивом $_POST, используя: $bean-›import($_GET); $bean-›import($_POST, имя,год); //только эти поля   -  person furier    schedule 20.06.2012


Ответы (1)


Я бы сделал это следующим образом, ЕСЛИ у вас нет уже настроенной таблицы базы данных:

$product = R::dispense( 'product' ); 
$product->name = $_POST['name']; 
$product->description = $_POST['description']; 
$product->price = $_POST['price']; 
$product->category = R::load('category',$_POST['category']); 
R::store( $product );

НО Я считаю, что если в вашей базе данных есть внешний индекс, назначенный для категории, и он указывает на таблицу категорий, то вы можете сделать то, что сделали выше. Итак, в таблице product создайте столбец category_id и сделайте его внешним индексом для category.id, и он должен работать. Я могу проверить это позже и дать вам более точный ответ, но это просто исходит из того, что я знаю навскидку.

person Tim Withers    schedule 04.05.2012
comment
Спасибо! при установке атрибута категории, такого как Beans, автоматически создается столбец FKeys! это гениально :D - person mauriblint; 04.05.2012