Re: Desparately trying to search a single DB field for multiple individual terms with find()

2008-11-05 Thread teknoid

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()

2008-11-05 Thread Nick

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()

2008-11-05 Thread teknoid

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()

2008-11-05 Thread Nick

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()

2008-11-05 Thread teknoid

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()

2008-11-05 Thread Nick

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