findAll() in yii

125,371

Solution 1

Try:

$id =101;
$comments = EmailArchive::model()->findAll(
array("condition"=>"email_id =  $id","order"=>"id"));

OR

$id =101;
$criteria = new CDbCriteria();
$criteria->addCondition("email_id=:email_id");
$criteria->params = array(':email_id' => $id);
$comments = EmailArchive::model()->findAll($criteria);

OR

$Criteria = new CDbCriteria();
$Criteria->condition = "email_id = $id";
$Products = Product::model()->findAll($Criteria);

Solution 2

If you use findAll(), I recommend you to use this:

$data_email = EmailArchive::model()->findAll(
                  array(
                      'condition' => 'email_id = :email_id',
                      'params'    => array(':email_id' => $id)
                  )
              );

Solution 3

Just to add some alternate, you could do like this also:

$id =101;
$criteria = new CDbCriteria();
$criteria->condition = "email_id =:email_id";
$criteria->params = array(':email_id' => $id);
$comments = EmailArchive::model()->findAll($criteria);

Solution 4

Another simple way get by using findall in yii

$id =101; 
$comments = EmailArchive::model()->findAll(array("condition"=>"':email_id'=$id"));
foreach($comments as $comments_1) 
{ 
echo  "email:".$comments_1['email_id'];
}

Solution 5

This is your safest way to do it:

$id =101;
//$user_id=25;
$criteria=new CDbCriteria;
$criteria->condition="email_id < :email_id";
//$criteria->addCondition("user_id=:user_id");
$criteria->params=array(
  ':email_id' => $id,
  //':user_id' => $user_id,
);
$comments=EmailArchive::model()->findAll($criteria);

Note that if you comment out the commented lines you get a way to add more filtering to your search.

After this it is recommend to check if there is any data returned like:

if (isset($comments)) { // We found some comments, we can sleep well tonight
  // do comments process or whatever
}
Share:
125,371
User1988
Author by

User1988

learn learn and learn as much as you can dude..... because learning could never be end up.

Updated on July 05, 2022

Comments

  • User1988
    User1988 almost 2 years

    EmailArchive Table:

    id email_id to from
    1  101      uk  msm
    2  102      uu  avc
    3  101      rk  uk
    4  103      xyz abc
    5  104      xyz poi
    6  104      abc xyz
    7  101      xyz abc
    

    Now in Yii I want record where email_id=101 I am using below code, but its not working.

    $id =101;
    $criteria = new CDbCriteria();
    $criteria->addCondition("email_id < :email_id");
    $comments = EmailArchive::model()->findAll($criteria, array(':email_id' => $id,));