1

これは簡単な質問のように思えますが、どういうわけか困惑しています。

いくつかの Bean を作成する場合:

list($product1, $product2, $product3) = R::dispense('product', 3);
...

およびいくつかのカテゴリがあります。

list($cat1, $cat2) = R::dispense('category', 2);
...

次に、それらを次のようにリンクします。

$product1->sharedCategory[] = $cat1;
$product3->sharedCategory[] = $cat1;

$cat1 に関連するすべての製品を照会するにはどうすればよいですか? 製品1と3を取り戻さなければなりません。

私が言ったように、単純です。mysql では、これは非常に簡単なので、いつでもレッドビーンに sql 文字列を送信できますが、これを構築する方法が必ずあるはずです。

ありがとう。

4

1 に答える 1

4

論理的には、カテゴリには、定義したように多くのカテゴリの製品ではなく、多くの製品があるため、逆になると思います (正しくない場合は申し訳ありません)。

========編集部分====================

ここに投稿された小さなソースを削除しました。マニュアル 非常に簡単で、はるかに優れており、接続、関連付け、更新などの方法に関するサンプル コードが非常に役立つためです。マニュアルに問題がある場合は、喜んでお手伝いします。

========== 追加情報 =======================

ここにソースコードをいくつか入れただけで、回答に何も変更しませんでした。このコードを試してみてください。必要に応じて両方の方法で機能します!

<?PHP
echo '<pre>';

require('rb.php'); 
$toolbox = R::setup('mysql:host=localhost;dbname=my_ORM','root','');
$farm = R::dispense('building');

//create the product list
list($product1,$product2,$product3) = R::dispense('product',3);
//add attributes 
$product1->name='prod1';
$product2->name='prod2';
$product3->name='prod3';


//create a list of categories 
list($category1,$category2) = R::dispense('category',2);
//add attributes 
$category1->name='categ1';
$category2->name='categ2';

//the connect beans together
R::associate($category1,$product1);
R::associate($category1,$product2);
R::associate($category1,$product3);
R::associate($category2,$product3);

//then store
R::store($product1);
R::store($product2);
R::store($product3);
R::store($category1);
R::store($category2); 

//get id for category 1
$categId=R::getCell( " select  `id` from `category` where `name`='categ1'  ");
//get products for category 1
$results = 
R::getAll( "
SELECT  `product`.`id`,`product`.`name` 
FROM `product`  left JOIN `category_product`
on `category_product`.`product_id`= `product`.`id` 
where  `category_id`='".$categId."' ");
//display
print_r($results);

//get categories for product3
$prodId=R::getCell( " select  `id` from `product` where `name`='prod3'  ");
$results = 
R::getAll( "
SELECT  `category`.`id`,`category`.`name` 
FROM `category`  left JOIN `category_product`
on `category_product`.`category_id`= `category`.`id` 
where  `product_id`='".$prodId."' ");
print_r($results);

?>
于 2011-10-03T21:46:05.947 に答える