findAll () в yii - PullRequest
       46

findAll () в yii

12 голосов
/ 16 марта 2012

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

Теперь в Yii я хочу запись, где email_id = 101 Я использую код ниже, но он не работает.

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

Ответы [ 8 ]

53 голосов
/ 16 марта 2012

Попробуйте:

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

ИЛИ

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

ИЛИ

$Criteria = new CDbCriteria();
$Criteria->condition = "email_id = $id";
$Products = Product::model()->findAll($Criteria);
6 голосов
/ 08 декабря 2014

Если вы используете findAll(), я рекомендую вам использовать это:

$data_email = EmailArchive::model()->findAll(
                  array(
                      'condition' => 'email_id = :email_id',
                      'params'    => array(':email_id' => $id)
                  )
              );
6 голосов
/ 20 марта 2012

Просто чтобы добавить альтернативу, вы можете сделать так же:

$id =101;
$criteria = new CDbCriteria();
$criteria->condition = "email_id =:email_id";
$criteria->params = array(':email_id' => $id);
$comments = EmailArchive::model()->findAll($criteria);
2 голосов
/ 06 декабря 2013

Еще один простой способ получить с помощью findall в yii

$id =101; 
$comments = EmailArchive::model()->findAll(array("condition"=>"':email_id'=$id"));
foreach($comments as $comments_1) 
{ 
echo  "email:".$comments_1['email_id'];
}
1 голос
/ 25 февраля 2013

Это ваш самый безопасный способ сделать это:

$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);

Обратите внимание, что если вы закомментируете закомментированные строки, вы получите способ добавить дополнительную фильтрацию в свой поиск.

После этогоРекомендуется проверить, есть ли какие-либо данные, возвращаемые как:

if (isset($comments)) { // We found some comments, we can sleep well tonight
  // do comments process or whatever
}
0 голосов
/ 06 сентября 2017

Используйте приведенный ниже код. Это должно работать.

$comments = EmailArchive::find()->where(['email_id' => $id])->all();
0 голосов
/ 05 декабря 2014

если вы используете $ критерий, я рекомендую использовать удар:

$criteria = new CDbCriteria();
$criteria->compare('email_id', 101);
$comments = EmailArchive::model()->findAll($criteria);
0 голосов
/ 25 июля 2012
$id = 101;

$sql = 'SELECT * FROM ur_tbl t WHERE t.email_id = '. $id;
$email = Yii::app()->db->createCommand($sql)->queryAll();

var_dump($email);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...