Kohana 3 ORM:如何执行具有2个多对多关系的查询

发布于 2024-09-10 16:58:06 字数 537 浏览 2 评论 0原文

我有一个定义了 2 个多对多关系的产品模型。

protected $_has_many = array
(
'foodcats' => array('model' => 'foodcat',   'through' => 'products_foodcats'),
'foodgroups' => array('model' => 'foodgroup', 'through' => 'products_foodgroups')
)

我需要一个查询,在其中查找具有给定 foodcat id 和给定食品组名称的产品。 我知道我可以执行以下操作来获取具有给定 foodcat id 的所有产品

$foodcat = ORM::factory('foodcat',$foodCatId);
$products = $foodcat->products->find_all();

,但是如何查询该 foodcat 中同时位于食品组“Entrees”中的产品?

谢谢!

I have a products model with 2 many to many relationships defined.

protected $_has_many = array
(
'foodcats' => array('model' => 'foodcat',   'through' => 'products_foodcats'),
'foodgroups' => array('model' => 'foodgroup', 'through' => 'products_foodgroups')
)

I need a query where I find products with a given foodcat id and a given foodgroup name.
I know I can do the following to get all products with a given foodcat id

$foodcat = ORM::factory('foodcat',$foodCatId);
$products = $foodcat->products->find_all();

But how do I query for products in that foodcat that also are in the foodgroup 'Entrees'?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

椒妓 2024-09-17 16:58:06

简单地;你不知道。你需要的是 INNER JOIN,比如;

ORM::factory('product')
->join('foodcats','INNER')
->on('foodcats.id','=',$foodcats_id)
->join('foodgroups','INNER')
->on('foodgroups.name','=',$foodgroups_name)
->find_all();

Simply; you don't. What you need is INNER JOIN, like;

ORM::factory('product')
->join('foodcats','INNER')
->on('foodcats.id','=',$foodcats_id)
->join('foodgroups','INNER')
->on('foodgroups.name','=',$foodgroups_name)
->find_all();
爱的十字路口 2024-09-17 16:58:06

在 Kohana 3.1 中,如果不使用 DB::expr,将会给出未知列错误。

ORM::factory('product')
->join('foodcats','INNER')
->on('foodcats.id','=', DB::expr($foodcats_id))
->join('foodgroups','INNER')
->on('foodgroups.name','=', DB::expr($foodgroups_name))
->find_all();

in Kohana 3.1 without using DB::expr, will give unknown column error.

ORM::factory('product')
->join('foodcats','INNER')
->on('foodcats.id','=', DB::expr($foodcats_id))
->join('foodgroups','INNER')
->on('foodgroups.name','=', DB::expr($foodgroups_name))
->find_all();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文