doukuipei9938
2010-04-09 18:52
浏览 67
已采纳

Kohana 2.3.4 ORM数据透视表查询

I'm trying to query a pivot table with Kohana's ORM and I'm wondering if there is a built in function I'm missing. Currently I only have 2 models setup for the tables "categories" and "products". There is a pivot table "categories_products", but I don't need a model for it when inserting data with this:

$product = ORM::factory('product');
$product->add(ORM::factory('category', $addCat));

However, I can't figure out how to query it without creating a model for it. The "join_table" function only returns the name of the pivot table (which I thought selected the table at first). If you can save data to the pivot table without a model, it seems to me that you should be able to retrieve data in a similar way. Any ideas?

图片转代码服务由CSDN问答提供 功能建议

我正在尝试使用Kohana的ORM查询数据透视表,我想知道是否有内置函数 我迷路了。 目前我只有2个模型设置表“类别”和“产品”。 有一个数据透视表“categories_products”,但在插入数据时我不需要它的模型:

  $ product = ORM :: factory('product'  ); 
 $ product-> add(ORM :: factory('category',$ addCat)); 
   
 
 

然而,我无法弄清楚 如何在不创建模型的情况下查询它。 “join_table”函数只返回数据透视表的名称(我认为最初选择了表格)。 如果您可以在没有模型的情况下将数据保存到数据透视表,在我看来您应该能够以类似的方式检索数据。 有什么想法吗?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dpp66953 2010-04-26 16:58
    已采纳

    The above actually didn't work as predicted for me. I kept getting an error that the property didn't exist in the model. This script has been working though.

                    $pivot = ORM::factory('category')->join_table('products'); //pivot table name between products and categories
                $productsTotal = ORM::factory('product')->join($pivot, $pivot . '.product_id', 'id')->where('category_id', $id)->find_all();
    
    已采纳该答案
    打赏 评论
  • douliao2493 2010-04-10 10:17

    You can access your categories without any explicit request like this:

    $product_object = ORM::factory('product', $your_product_id);
    
    foreach ($product->categores as category):
        //access category ORM object...
    endforeach;
    

    Kohana will request the categories for your product when you first try to access them I think.

    打赏 评论

相关推荐 更多相似问题