Cakephp many requests inside request

I have a site built in cakephp 2.x I have a content query with a very large table relation. I know that the most efficient way to make this large request is to do the join request manually. But I wanted to try to hold back. I only selected the field that I need, but at the end I print how many requests have been created inside: 5000 requests! The database takes 6-10 seconds to develop this query and I want to optimize the time. Is cakephp method optimized? I don't want to use a join now because there are many joins to create. Maybe? I know this is a crazy query with a lot of data, but is the main product page with a lot of data. This is the request:

$this->set('product',$this->Product->find('all', array(
                    'contain' => array(
                            'Origin'  => array(
                                'fields'=>array('id','diet_id'),
                                'OriginAlias' => array(
                                    'fields'=>array('id','origin_id','language','alias'),
                                    'conditions' =>  array('OriginAlias.language' => $lang)
                                ),
                                'Diet' => array(
                                    'fields'=>array('id'),
                                    'DietAlias' => array(
                                        'fields'=>array('id','diet_id','language','alias'),
                                        'conditions' =>  array('DietAlias.language' => $lang)
                                    ),
                                )
                            ),
                            'ProductAlias' => array(
                                    'conditions' =>  array('ProductAlias.alias' => $alias),
                                    'User' => array(
                                        'fields'=>array('id','username'),
                                        'Profile' => array(
                                            'fields'=>array('id','user_id','country','sex','diet','show_diet'),
                                        ),
                                        'UserOptions' => array ('fields' => array ('avatar_type')),
                                        'Avatar' => array ('fields' => array ('filename'))
                                    ),
                                    'User2' => array(
                                        'fields'=>array('id','username'),
                                        'Profile' => array(
                                            'fields'=>array('id','user_id','country','sex','diet','show_diet'),
                                        ),
                                        'UserOptions' => array ('fields' => array ('avatar_type')),
                                        'Avatar' => array ('fields' => array ('filename'))
                                    )
                            ),
                            'ProductImage'=> array(
                                'limit' => 1,

                                'ProductImageVote'=> array(
                                    'order' => 'ProductImageVote.vote desc'
                                ),
                                'User' => array(
                                    'fields'=>array('id','username'),
                                        'Profile' => array(
                                            'fields'=>array('id','user_id','country','sex','diet','show_diet'),
                                        ),
                                )
                            ),
                            'ProductGroupProduct' => array(
                                'fields'=>array('id','user_id','product_id','product_group_id'),
                                'ProductGroup'=> array(
                                            'fields'=>array('id','text','language'),
                                        ),
                            ),
                            'ProductIngredientVersion' => array(
                                'conditions' =>  $cond_version,
                                'limit' => 1,
                                'ProductIngredient' => array(
                                    /*'Product' => array(
                                        'ProductAlias' => array()
                                    ),*/
                                    'Ingredient' => array(
                                        'fields'=>array('id','user_id','origin_id','active'),
                                        'IngredientAlias' => array(
                                            'fields'=>array('id','user_id','ingredient_id','edit_user_id','alias'),
                                        ),
                                    ),
                                ),
                            ),
                            'ProductVersion' => array(
                                'conditions' =>  array('ProductVersion.active' => '1', 'ProductVersion.product_id' => $id),
                                'limit' => 1,
                                'ProductProperty' => array(
                                    'Property' => array(
                                        'fields'=>array('id','user_id','group_id','unit_id'),
                                        'PropertyAlias'  => array(
                                            'fields'=>array('id','user_id','property_id','alias','language'),
                                            'conditions' =>  array('PropertyAlias.language' => $lang)
                                        ),
                                        'Unit' => array(
                                            'fields'=>array('id','user_id','symbol','active'),
                                        ),
                                        'PropertyGroup' => array(
                                            'fields'=>array('id','user_id'),
                                            'PropertyGroupAlias'  => array(
                                                'fields'=>array('id','user_id','group_id','alias'),
                                                'conditions' =>  array('PropertyGroupAlias.language' => $lang)
                                            )
                                        )
                                    ),
                                ),
                            ),
                            'Manufacturer' => array(
                                            'fields'=>array('id','text'),
                                        ),
                            'Brand' => array(
                                            'fields'=>array('id','text'),
                                        ),
                            'UserProductLike' => array(
                                'conditions' =>  array('UserProductLike.product_id' => $id),
                            ),
                            'UserProductHate' => array(
                                'conditions' =>  array('UserProductHate.product_id' => $id),
                            ),
                        ),
                    'conditions' => array('Product.id' => $id)  
                )));    

      

0


source to share





All Articles