PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Thursday, March 17, 2022

[FIXED] How do I retrieve all recipes using a particular ingredient in Cakephp 2.0?

 March 17, 2022     cakephp, cakephp-2.0     No comments   

Issue

I have 2 models which are connected via a HABTM association, in the same way that Recipes and Ingredients are associated in the cookbook.

I need to do the equivalent of finding all recipes which use a particular ingredient - how do I do that?

So basically, I'll have ingredient_id, and I want to do something like:

$this->Recipe->find('all', array('conditions' => 'recipe uses this ingredient'));

I'd also like to retrieve a list of all ingredients which are used in at least one recipe.


Solution

When you use HABTM (hasAndBelongsToMany) relationships in CakePHP, it creates a model by combining the names of both models in alphabetical order (reference). You can use that model to perform your query.

Example:

<?php

$recipes = $this->Recipe->IngredientsRecipe->find('all', array(
    'conditions' => array(
        'IngredientsRecipe.ingredient_id' => 1 // This could also be an array of ingredients
    ),
    'group' => array('Recipe.id')
));

In the example above, we're using the IngredientsRecipe model which has 2 relationships, both belongsTo with Ingredient and Recipe. Just in case a Recipe has multiple ingredients that match, we're also grouping by the recipe ID.

PS: You don't need to define the relationship to IngredientsRecipe as long as you've defined the hasAndBelongsToMany relationship between Recipe and Ingredients. CakePHP will do the rest automatically.



Answered By - Francois Deschenes
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing