red bean php按关系查找

时间:2011-10-03 18:49:48

标签: php redbean

这似乎是一个简单的问题,但我有点困惑。

如果我创建了几个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中这是一个明智的选择,所以总是可以直接向red bean发送一个sql字符串,但肯定有一种方法可以做到这一点。

感谢。

1 个答案:

答案 0 :(得分:4)

我认为它反过来了(抱歉,如果我不对),因为逻辑上一个类别有许多产品而不是产品很多类别,如你所定义的那样。

========编辑部分====================

我删除了此处发布的小型来源,因为手册Manuall 是非常简单,更好,非常有用的示例代码如何连接,进行关联,更新等。我相信你会从中受益匪浅。如果手册有任何困难,很乐意提供帮助。

==========附加信息=======================

这里我只是放了一些源代码,没有改变我的衣服。试试这个代码吧,它可以按你想要的方式工作!

<?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);

?>