Re: Desparately trying to search a single DB field for multiple individual terms with find()
Seems like you are overriding your condition each time... On Nov 5, 1:49 pm, Nick [EMAIL PROTECTED] wrote: I'm hoping someone can help. I'm fairly new to CakePHP but am thoroughly enjoying coding with it. Basically I've got a field within a table that contains my content. I'm trying to grab the search terms from a single input, explode them and search the content section for each term individually. I'm doing something along these lines: $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): $conditions['conditions']['OR']['Question.content LIKE'] = array(% $splitTerm%); endforeach; $this-set('questions',$this-Question-find('all',$conditions)); My dilemma is basically in setting the conditions... because 'Question.content LIKE' can only contain one value, I can't build an array within my foreach loop that I can then pass to the find method to build a full SQL query. --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: Desparately trying to search a single DB field for multiple individual terms with find()
Yes, thats my biggest issue, I don't know if there is a way within Cake to define multiple array values for 'Question.content LIKE' I've tried building it like this, however the SQL query built off of this array isn't correct: $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): $conditions['conditions']['OR'] ['Question.content LIKE'][$i]= (% $splitTerm%); $i++; endforeach; $this-set('questions',$this-Question-find('all',$conditions)); On Nov 5, 2:38 pm, teknoid [EMAIL PROTECTED] wrote: Seems like you are overriding your condition each time... On Nov 5, 1:49 pm, Nick [EMAIL PROTECTED] wrote: I'm hoping someone can help. I'm fairly new to CakePHP but am thoroughly enjoying coding with it. Basically I've got a field within a table that contains my content. I'm trying to grab the search terms from a single input, explode them and search the content section for each term individually. I'm doing something along these lines: $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): $conditions['conditions']['OR']['Question.content LIKE'] = array(% $splitTerm%); endforeach; $this-set('questions',$this-Question-find('all',$conditions)); My dilemma is basically in setting the conditions... because 'Question.content LIKE' can only contain one value, I can't build an array within my foreach loop that I can then pass to the find method to build a full SQL query. --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: Desparately trying to search a single DB field for multiple individual terms with find()
Nothing to do with cake. Your usage is incorrect. Please review how to correctly build an 'OR' condition in the manual, there are multiple examples. On Nov 5, 2:45 pm, Nick [EMAIL PROTECTED] wrote: Yes, thats my biggest issue, I don't know if there is a way within Cake to define multiple array values for 'Question.content LIKE' I've tried building it like this, however the SQL query built off of this array isn't correct: $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): $conditions['conditions']['OR'] ['Question.content LIKE'][$i]= (% $splitTerm%); $i++; endforeach; $this-set('questions',$this-Question-find('all',$conditions)); On Nov 5, 2:38 pm, teknoid [EMAIL PROTECTED] wrote: Seems like you are overriding your condition each time... On Nov 5, 1:49 pm, Nick [EMAIL PROTECTED] wrote: I'm hoping someone can help. I'm fairly new to CakePHP but am thoroughly enjoying coding with it. Basically I've got a field within a table that contains my content. I'm trying to grab the search terms from a single input, explode them and search the content section for each term individually. I'm doing something along these lines: $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): $conditions['conditions']['OR']['Question.content LIKE'] = array(% $splitTerm%); endforeach; $this-set('questions',$this-Question-find('all',$conditions)); My dilemma is basically in setting the conditions... because 'Question.content LIKE' can only contain one value, I can't build an array within my foreach loop that I can then pass to the find method to build a full SQL query. --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: Desparately trying to search a single DB field for multiple individual terms with find()
I've been staring at the manual all day... maybe I am missing something and if so, my bad. If I build an or statement without the foreach loop, I would do it as follows: $conditions = array( 'conditions'= array( 'OR' = array( 'Question.content LIKE' = this, 'Question.content LIKE' = that ) ) ); This is the problem, the second Question.content will overwrite the first. Is there any way to build an OR statement where you can look for multiple variables within the same database field? Either way, I think I've accomplished what I set out to by doing the following and simply building a regex on the fly, I'd LOVE to know if there is a simpler way to do this as I doubt this is the easiest way: $i = 1; $regString = ^; $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): if (count($splitTerms) != $i){ $regString = $regString.$splitTerm.{1,}|^; } else { $regString = $regString.$splitTerm.{1,}; } $i++; endforeach; $conditions = array('conditions'= array('Question.content REGEXP' = $regString)); $this-set('questions',$this-Question-find('all',$conditions)); On Nov 5, 3:28 pm, teknoid [EMAIL PROTECTED] wrote: Nothing to do with cake. Your usage is incorrect. Please review how to correctly build an 'OR' condition in the manual, there are multiple examples. On Nov 5, 2:45 pm, Nick [EMAIL PROTECTED] wrote: Yes, thats my biggest issue, I don't know if there is a way within Cake to define multiple array values for 'Question.content LIKE' I've tried building it like this, however the SQL query built off of this array isn't correct: $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): $conditions['conditions']['OR'] ['Question.content LIKE'][$i]= (% $splitTerm%); $i++; endforeach; $this-set('questions',$this-Question-find('all',$conditions)); On Nov 5, 2:38 pm, teknoid [EMAIL PROTECTED] wrote: Seems like you are overriding your condition each time... On Nov 5, 1:49 pm, Nick [EMAIL PROTECTED] wrote: I'm hoping someone can help. I'm fairly new to CakePHP but am thoroughly enjoying coding with it. Basically I've got a field within a table that contains my content. I'm trying to grab the search terms from a single input, explode them and search the content section for each term individually. I'm doing something along these lines: $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): $conditions['conditions']['OR']['Question.content LIKE'] = array(% $splitTerm%); endforeach; $this-set('questions',$this-Question-find('all',$conditions)); My dilemma is basically in setting the conditions... because 'Question.content LIKE' can only contain one value, I can't build an array within my foreach loop that I can then pass to the find method to build a full SQL query. --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: Desparately trying to search a single DB field for multiple individual terms with find()
How can you tell me you looked at the manual, when the example is right there in complex find conditions? http://book.cakephp.org/view/74/Complex-Find-Conditions (I know 'cause I remember adding it :)) $this-Post-find('all', array('conditions'=array( 'OR'=array(array('Post.title LIKE'='this'), array('Post.title LIKE'='that') ; On Nov 5, 3:54 pm, Nick [EMAIL PROTECTED] wrote: I've been staring at the manual all day... maybe I am missing something and if so, my bad. If I build an or statement without the foreach loop, I would do it as follows: $conditions = array( 'conditions'= array( 'OR' = array( 'Question.content LIKE' = this, 'Question.content LIKE' = that ) ) ); This is the problem, the second Question.content will overwrite the first. Is there any way to build an OR statement where you can look for multiple variables within the same database field? Either way, I think I've accomplished what I set out to by doing the following and simply building a regex on the fly, I'd LOVE to know if there is a simpler way to do this as I doubt this is the easiest way: $i = 1; $regString = ^; $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): if (count($splitTerms) != $i){ $regString = $regString.$splitTerm.{1,}|^; } else { $regString = $regString.$splitTerm.{1,}; } $i++; endforeach; $conditions = array('conditions'= array('Question.content REGEXP' = $regString)); $this-set('questions',$this-Question-find('all',$conditions)); On Nov 5, 3:28 pm, teknoid [EMAIL PROTECTED] wrote: Nothing to do with cake. Your usage is incorrect. Please review how to correctly build an 'OR' condition in the manual, there are multiple examples. On Nov 5, 2:45 pm, Nick [EMAIL PROTECTED] wrote: Yes, thats my biggest issue, I don't know if there is a way within Cake to define multiple array values for 'Question.content LIKE' I've tried building it like this, however the SQL query built off of this array isn't correct: $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): $conditions['conditions']['OR'] ['Question.content LIKE'][$i]= (% $splitTerm%); $i++; endforeach; $this-set('questions',$this-Question-find('all',$conditions)); On Nov 5, 2:38 pm, teknoid [EMAIL PROTECTED] wrote: Seems like you are overriding your condition each time... On Nov 5, 1:49 pm, Nick [EMAIL PROTECTED] wrote: I'm hoping someone can help. I'm fairly new to CakePHP but am thoroughly enjoying coding with it. Basically I've got a field within a table that contains my content. I'm trying to grab the search terms from a single input, explode them and search the content section for each term individually. I'm doing something along these lines: $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): $conditions['conditions']['OR']['Question.content LIKE'] = array(% $splitTerm%); endforeach; $this-set('questions',$this-Question-find('all',$conditions)); My dilemma is basically in setting the conditions... because 'Question.content LIKE' can only contain one value, I can't build an array within my foreach loop that I can then pass to the find method to build a full SQL query. --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: Desparately trying to search a single DB field for multiple individual terms with find()
OH MAN! I see exactly what I was missing, I wasn't defining each condition within the OR array as an array! Thank you for pointing it out. I must have typed and re-typed those lines so many times that I just overlooked it... That settled it, thanks a ton for the help! On Nov 5, 4:27 pm, teknoid [EMAIL PROTECTED] wrote: How can you tell me you looked at the manual, when the example is right there in complex find conditions?http://book.cakephp.org/view/74/Complex-Find-Conditions (I know 'cause I remember adding it :)) $this-Post-find('all', array('conditions'=array( 'OR'=array(array('Post.title LIKE'='this'), array('Post.title LIKE'='that') ; On Nov 5, 3:54 pm, Nick [EMAIL PROTECTED] wrote: I've been staring at the manual all day... maybe I am missing something and if so, my bad. If I build an or statement without the foreach loop, I would do it as follows: $conditions = array( 'conditions'= array( 'OR' = array( 'Question.content LIKE' = this, 'Question.content LIKE' = that ) ) ); This is the problem, the second Question.content will overwrite the first. Is there any way to build an OR statement where you can look for multiple variables within the same database field? Either way, I think I've accomplished what I set out to by doing the following and simply building a regex on the fly, I'd LOVE to know if there is a simpler way to do this as I doubt this is the easiest way: $i = 1; $regString = ^; $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): if (count($splitTerms) != $i){ $regString = $regString.$splitTerm.{1,}|^; } else { $regString = $regString.$splitTerm.{1,}; } $i++; endforeach; $conditions = array('conditions'= array('Question.content REGEXP' = $regString)); $this-set('questions',$this-Question-find('all',$conditions)); On Nov 5, 3:28 pm, teknoid [EMAIL PROTECTED] wrote: Nothing to do with cake. Your usage is incorrect. Please review how to correctly build an 'OR' condition in the manual, there are multiple examples. On Nov 5, 2:45 pm, Nick [EMAIL PROTECTED] wrote: Yes, thats my biggest issue, I don't know if there is a way within Cake to define multiple array values for 'Question.content LIKE' I've tried building it like this, however the SQL query built off of this array isn't correct: $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): $conditions['conditions']['OR'] ['Question.content LIKE'][$i]= (% $splitTerm%); $i++; endforeach; $this-set('questions',$this-Question-find('all',$conditions)); On Nov 5, 2:38 pm, teknoid [EMAIL PROTECTED] wrote: Seems like you are overriding your condition each time... On Nov 5, 1:49 pm, Nick [EMAIL PROTECTED] wrote: I'm hoping someone can help. I'm fairly new to CakePHP but am thoroughly enjoying coding with it. Basically I've got a field within a table that contains my content. I'm trying to grab the search terms from a single input, explode them and search the content section for each term individually. I'm doing something along these lines: $term = $this-data['Question']['searchTerm']; $splitTerms = explode( ,$term); foreach($splitTerms as $splitTerm): $conditions['conditions']['OR']['Question.content LIKE'] = array(% $splitTerm%); endforeach; $this-set('questions',$this-Question-find('all',$conditions)); My dilemma is basically in setting the conditions... because 'Question.content LIKE' can only contain one value, I can't build an array within my foreach loop that I can then pass to the find method to build a full SQL query. --~--~-~--~~~---~--~~ 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