*I have started to play around with *3.0.  *I have taken one of our models from 
*2.x *and **moving to *3.0 *for **practice **and **testing*.   *I have come 
across **and **issue when calling a Model*/*Table **and **attempting to 
**include **an hasMany association*. *But*, *even though I **use *contain *in 
the call it does add the association to the sql statement*.*Here is the 
*breakdown (*superfluous code removed*).  *Using *3.0 *code current **as **of 
*4/29/2014.  *Is there something I am missing*/*// Products which has many 
association of images:
**class *ProductsTable *extends *Table {    *public function *initialize(*array 
*$config) {        $this->table(*'products'*);        
$this->displayField(*'name'*);        $this->primaryKey([*'id'*]);        
$this->addBehavior(*'Timestamp'*);        $this->hasMany(*'ProductImages'*, [   
             *'foreignKey' *=> *'product_id'*,                *//            
'joinType' => 'LEFT'
*            ]);    }}*// Product Images belongs to Products
**class *ProductImagesTable *extends *Table {    *public function 
*initialize(*array *$config)    {        $this->table(*'product_images'*);      
  $this->displayField(*'name'*);        $this->primaryKey([*'id'*]);        
$this->addBehavior(*'Timestamp'*);        $this->belongsTo(            
*'Products'*,            [                *'foreignKey' *=> *'product_id'*,     
           *//            'joinType' => 'LEFT'
*            ]        );    }}*class *ProductsController *extends 
*AppController {    *public function *index()    {        *// calling 
$this->Products gives the same results
*        $p = TableRegistry::*get*(*'Products'*);        $pQuery = $p           
 ->find()            ->where([*'status' *=> *'active'*])            
->select([*'id'*, *'name'*, *'price'*])            ->order([*'Product.name' *=> 
*'ASC'*])            */* ====        tried just calling  
->contain(['ProductImages')        =====  not working either */
*            ->contain(                [                    *'ProductImages' 
*=> *function *($q) {                        *return *$q                        
    ->select([*'id'*, *'product_id'*, *'name'*])                            
->order([*'ProductImages.position' *=> *'ASC'*]);                    }          
      ]            );        pr($pQuery->sql());        *// This shows the 
incorrect sql without the contain association
**        // SELECT Products.id AS `Products__id`, Products.name AS 
`Products__name`, Products.price AS `Products__price`
**        //    FROM products AS Products WHERE status = :c0 ORDER BY 
Product.name ASC
*        $pi = TableRegistry::*get*(*'ProductImages'*);        $piQuery = $pi   
         ->find(*'all'*)            ->select([*'name'*, *'id'*, 
*'product_id'*])            ->contain([*'Products'*]);        
pr($piQuery->sql());        *// This shows the correct sql
**        // SELECT ProductImages.name AS `ProductImages__name`, 
ProductImages.id AS `ProductImages__id`,
**        // ProductImages.product_id AS `ProductImages__product_id`
**        // FROM product_images AS ProductImages
**        // LEFT JOIN products Products ON Products.id = 
(ProductImages.product_id)
*        *exit*;    }}

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.

Reply via email to