Wednesday, February 23, 2011

Re: Containable, paginate, Trying to get property of non-object

What happens if you add a $hasMany Place statement to the Thing model?

Jeremy Burns
Class Outfit

jeremyburns@classoutfit.com
http://www.classoutfit.com

On 24 Feb 2011, at 05:44, Ryan Schmidt wrote:

> I'm using CakePHP 1.3.6 and am trying to use Containable for the first time, and I have an index action (as CakePHP baked it for me) that uses paginate().
>
> Since I suspect I will want to use Containable everywhere, in my app_model.php I have:
>
> class AppModel extends Model {
> var $actsAs = array('Containable');
> ...
> }
>
> I have models Thing and Place, and Thing has relationships with up to two places. In models/thing.php I have:
>
> class Thing extends AppModel {
> var $belongsTo = array(
> 'Place' => array(
> 'className' => 'Place',
> 'foreignKey' => 'place_id',
> ),
> 'CurrentPlace' => array(
> 'className' => 'Place',
> 'foreignKey' => 'current_place_id',
> ),
> );
> ...
> }
>
> The idea is that I need to keep track of where this Thing is now (CurrentPlace) and allow the user to specify where they want it to be some time later (Place). Either of these Places could also be empty / null.
>
> In models/place.php I don't have any relationships defined about Things (do I need to?)
>
> In controllers/things_controller.php I have:
>
> class ThingsController extends AppController {
> function admin_index() {
> $this->paginate = array(
> 'fields' => array(
> 'Thing.id',
> 'Thing.name',
> 'Thing.created',
> 'Thing.modified',
> ),
> 'contain' => array(
> 'Place.name',
> 'CurrentPlace.name',
> ),
> );
> $this->set('things', $this->paginate());
> }
> ...
> }
>
> When I view the index, I get:
>
> Notice (8): Trying to get property of non-object [CORE/cake/libs/model/behaviors/containable.php, line 408]
>
> This goes away if I remove the 'contain' array entry about CurrentPlace. So it seems to not like it when I use a relationship name that is not also a model name.
>
> Am I doing something wrong? Any idea what I should do to fix it? Thanks.
>
>
>
>
>
> --
> Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
> Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.
>
>
> To unsubscribe from this group, send email to
> cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

No comments: