*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.