Re: Searchable behavior on two models
If you are talking about saving to more than one model with a saveAll there is a patch here. I haven't tried it myself but you can check it out On Mar 10, 4:16 pm, Foroct forrestfraz...@gmail.com wrote: Well it looks like this behaviour can't successfully index two different models. Moving back to an old fashioned 'find'. Thanks all. Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Re: Searchable behavior on two models
Sorry, here is the link -- http://code.google.com/p/searchable-behaviour-for-cakephp/issues/detail?id=19 On Mar 10, 4:16 pm, Foroct forrestfraz...@gmail.com wrote: Well it looks like this behaviour can't successfully index two different models. Moving back to an old fashioned 'find'. Thanks all. Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Re: Searchable behavior on two models
Well it looks like this behaviour can't successfully index two different models. Moving back to an old fashioned 'find'. Thanks all. Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Re: Searchable behavior on two models
hi, Well it looks like this behaviour can't successfully index two different models. Moving back to an old fashioned 'find'. I have the behaviour attached to multiple models, with no issues at all, not with saving or with retrieving. There's something amiss elsewhere. Cheers, J Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Re: Searchable behavior on two models
All three models have the same $actAs array var $actsAs = array('Searchable'); Each model saves its data properly using if ($this-Model-save($this- data)) { Where it falls apart is after the model data save and prior to the search_index save. I have tracked the issue down to something in my model. I think I am not setting up my associations correctly particularly in my Comment model. User - hasMany Post and hasMany Comment Post - belongsTo User and hasMany Comment Comment - belongsTo User and belongsTo Post and hasOne User Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Re: Searchable behavior on two models
User - hasMany Post and hasMany Comment Post - belongsTo User and hasMany Comment Comment - belongsTo User and belongsTo Post and hasOne User Last one looks wrong to me, I'd expect: Comment belongsTo Post, User Post belongsTo User Post hasMany Comment User hasMany Comment, Post cheers, j -- jon bennett - www.jben.net - blog.jben.net Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Re: Searchable behavior on two models
I thought so after I wrote it out, but when I removed the hasOne association I still get the same result. For some reason when I create a post, the post gets added with no problem but the seachable fails and kicks an error. Query: INSERT INTO `search_index` (`model`, `association_key`, `data`, `modified`, `created`) VALUES ('User', NULL, '', '2010-03-08 06:05:15', '2010-03-08 06:05:15') For some reason even though the model I am updating is the Post model when search_index attempts to add a record to its table the User model always overrides Post. Obviously since this is not the correct model there is no association_key (the id of the post) so it again fails. Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Re: Searchable behavior on two models
Did you try logging $data? Or check that you're not doing $this-User- save(...) instead of $this-Post-save(...) This is how I have my models set up. You should ignore the 'fields' array in the behavior settings. I made a bunch of modifications to it. User: public $hasMany = array( 'Post' = array( 'className' = 'Post', 'foreignKey' = 'user_id', 'dependent' = true ), 'Comment' = array( 'className' = 'Comment', 'foreignKey' = 'user_id', 'dependent' = true ) ); Post: public $hasMany = array('Comment'); public $belongsTo = array('User'); public $actsAs = array( 'Tag' = array( 'table_label' = 'tags', 'tag_label' = 'name', 'separator' = ',' ), 'Searchable' = array( 'fields' = array('title', 'intro', 'body', 'tags') ), 'Sluggable' = array( 'translation' = 'utf-8', 'separator' = '_', 'label' = 'title', 'length' = 128, 'overwrite' = true ) ); Comment: public $belongsTo = array( 'Post', 'User' ); public $actsAs = array( 'Tree' = array( 'parent' = 'parent_id', 'left' = 'lft', 'right' = 'rght' ), 'Searchable' = array( 'fields' = array('subject', 'body') ) ); On Mar 8, 9:09 am, Foroct forrestfraz...@gmail.com wrote: I thought so after I wrote it out, but when I removed the hasOne association I still get the same result. For some reason when I create a post, the post gets added with no problem but the seachable fails and kicks an error. Query: INSERT INTO `search_index` (`model`, `association_key`, `data`, `modified`, `created`) VALUES ('User', NULL, '', '2010-03-08 06:05:15', '2010-03-08 06:05:15') For some reason even though the model I am updating is the Post model when search_index attempts to add a record to its table the User model always overrides Post. Obviously since this is not the correct model there is no association_key (the id of the post) so it again fails. Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Re: Searchable behavior on two models
I've looked at the array I am passing when the post gets entered and its fine. I am saving correctly using $this-Post and the post data saves to the post table fine. My models look like this. User var $actsAs = array('Searchable' = array( 'fields' = array('username', 'first_name', 'last_name', 'location', 'email') ) ); var $hasMany = array( 'Post' = array( 'className' = 'Post', 'foreignKey' = 'user_id', 'dependent' = true, 'conditions' = '', 'fields' = '', 'order' = Post.created DESC', 'limit' = '', 'offset' = '', 'exclusive' = '', 'finderQuery' = '', 'counterQuery' = '' ), 'Comment' = array( 'className' = 'Comment', 'foreignKey' = 'user_id', 'dependent' = true, 'conditions' = '', 'fields' = '', 'order' = '', 'limit' = '', 'offset' = '', 'exclusive' = '', 'finderQuery' = '', 'counterQuery' = '' ) ); Post var $actsAs = array('Searchable'); var $belongsTo = array( 'User' = array( 'className' = 'User', 'foreignKey' = 'user_id', 'conditions' = '', 'fields' = '', 'order' = '' ) ); var $hasMany = array( 'Comment' = array( 'className' = 'Comment', 'foreignKey' = 'post_id', 'dependent' = false, 'conditions' = '', 'fields' = '', 'order' = '', 'limit' = '', 'offset' = '', 'exclusive' = '', 'finderQuery' = '', 'counterQuery' = '' ) Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Re: Searchable behavior on two models
What do the models look like? Especially the $actsAs arrays. What does the data look like before you save it? Are you using saveAll()? Try adding some debugging calls in the behavior's beforeSave() afterSave() methods. On Mar 6, 4:05 pm, Foroct forrestfraz...@gmail.com wrote: Continuing to work on this I have found that when I comment out my var $hasMany = array( in my User model, then this searchable plugin works fine. I tried to comment out the individual keys for this array but that did not help. When I remove the hasMany array then I am able to successfully add content however, any queries that rely on that hasMany now fail. Still working on this, still holding out hope that someone can help... Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Re: Searchable behavior on two models
Continuing to work on this I have found that when I comment out my var $hasMany = array( in my User model, then this searchable plugin works fine. I tried to comment out the individual keys for this array but that did not help. When I remove the hasMany array then I am able to successfully add content however, any queries that rely on that hasMany now fail. Still working on this, still holding out hope that someone can help... Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Re: Searchable behavior on two models
I am continuing to work on this as I want more than one model on my site searchable. It looks like the problem is occurring in the Searchable Behavior setup function. function setup($model, $settings = array()) { $settings = array_merge($this-_defaults, $settings); $this-settings[$model-name] = $settings; $this-model = $model; } For some reason regardless of what model I am using it always gets returned at the Users model. Because of this the the id will only populate correctly when adding a User and not when adding a Post (as there is no new Post id to return). Since I didn't hear back from anyone, I'm guessing not many people use this searchable behavior. But as a n00b I would still appreciate any insight people have as to why this may be failing. Thanks Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
Searchable behavior on two models
I am using this behavior (http://code.google.com/p/searchable- behaviour-for-cakephp/) on two different models (User and Post). Searchable is working fine when I add a new user and search for a user. I manually populated a few rows of Post data and my search for a post function works fine. However when I try to add a new post I get the following errors. Undefined index: User [APP/models/behaviors/searchable.php, line 77] Invalid argument supplied for foreach() [APP/models/behaviors/ searchable.php, line 78] SQL Error: 1048: Column 'association_key' cannot be null [CORE/cake/libs/model/datasources/dbo_source.php, line 525] Query: INSERT INTO `search_index` (`model`, `association_key`, `data`, `modified`, `created`) VALUES ('User', NULL, '', '2010-02-28 12:04:11', '2010-02-28 12:04:11') Query: INSERT INTO `search_index` (`model`, `association_key`, `data`, `modified`, `created`) VALUES ('User', NULL, '', '2010-02-28 12:04:11', '2010-02-28 12:04:11') Cannot modify header information - headers already sent by (output started at /home/xxx/example.com/cake/basics.php:307) [CORE/cake/libs/ controller/controller.php, line 644] So from what I can tell when I add a post something with the user model is conflicting with my add posts function, as the Query stats the model value is user and not post. I would expect to see the query values start with the 'Post' model then the post id and then some data. Is there something I need to do when using this behavior on two different models? Is there any reason that the behavior thinks I am inserting User data when in fact I am inserting Post data? Any help or suggestions would be appreciated. Thanks. Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en