Если у меня есть бин ‘product’ и бин ‘upload’, у меня есть два свойства:
$product->sharedImageList;
$product->sharedManualList;
$product->sharedVideoList; // just here for another property
//relating to another bean elsewhere
Они оба используют bean-компонент «upload». Но я не могу назвать их псевдонимами. Могу ли я не использовать один и тот же компонент для двух общих списков? Я знаю, что список разделяемых бинов должен совпадать с именем бина, но fetchAs работает ниже …
$teacher = $c->fetchAs( 'person' )->teacher;
я пытался
$product->fetchAs('upload')->sharedImageList
//getting desperate now
$product->via('upload')->sharedImageList
$product->alias('upload')->sharedImageList
<?php
include_once 'rb.php';
error_reporting( E_ALL );
R::addDatabase( "my_site", "mysql:host=127.0.0.1;dbname=my_db", "root", "", false );
R::selectDatabase( 'my_site' );
\R::nuke();
$images = [
["id" => 1,'name'=>"image"],
["id" => 2,'name'=>"test image2"],
];
$manuals = [
["id" => 1,'name'=>"test1"],
["id" => 2,'name'=>"test manual2"],
];
$product = R::findOneOrDispense( 'product', ' id=? ', [1] );
$product->sharedImageList = []; //empty / create new shared image list
$product->sharedManualList = []; //empty / create new shared manual list
$product->name = "im a product"; // give product a name for giggles
foreach ($images as $object) {
$upload = R::findOneOrDispense( 'upload', " id = ? ", [$object['id']] );
$upload->name = $object['name'];
$product->sharedImageList[] = $upload;
}
foreach ($manuals as $object) {
$upload = R::findOneOrDispense( 'upload', " id = ? ", [$object['id']] );
$upload->name = $object['name'];
$product->sharedManualList[] = $upload;
}
$product = R::load( 'product', R::store( $product ) );
echo '<pre>';
echo "\n\n<b>// this should return 2 beans of images that were uploaded</b>\n";
echo json_encode( $product->sharedImageList, JSON_PRETTY_PRINT );echo "\n\n<b>// this should return 2 beans of manuals that were uploaded</b>\n";
echo json_encode( $product->sharedManualList, JSON_PRETTY_PRINT );echo "\n\n<b>// this is the only way i can access the shared lists, which is the name of the (upload) bean</b>\n";
echo json_encode( $product->sharedUploadList, JSON_PRETTY_PRINT );
echo "\n\n\n";
echo json_encode($product,JSON_PRETTY_PRINT);
echo '</pre>';
красный боб не поддерживается many to many
алиасные отношения между парой бобов !! (скажем bean1
а также bean2
)
Обходной путь должен использовать специальный компонент (скажем, bean_m2m
представляющие «m2m-отношение» и пару отношений один-ко-многим и многие-к-одному, как это.
bean1
— (one2manyRelation) — bean_m2m
— (many2oneRelation) — bean2
Чтобы упростить запросы, вы можете использовать (aggr
функции) [https://www.redbeanphp.com/index.php?p=/other_relations#aggr]
Других решений пока нет …