ورود

View Full Version : select in yii



hooman.pro
دوشنبه 21 اردیبهشت 1394, 08:34 صبح
سلام یک جدول دارم که با یک جدول دیگر رابطه many_many دارد. میخواهم تعداد رکورد هایی از جدول اول رو به دست بیارم که به ازای آن ها در جدول واسط رکوردی وجود ندارد. در واقع رابطه many_many آن ها خالی است. چه کدی بنویسم؟

MMSHFE
شنبه 26 اردیبهشت 1394, 00:46 صبح
یک راه که همینطوری به ذهنم رسید:

$postIds = array();
$comments = Comments::model()->findAll(array('select'=>'DISTINCT post_id'));
foreach($comments as $comment) {
$postIds[] = $comment->post_id;
}
unset($comments);
$criteria = new CDbCriteria;
$criteria->addNotInCondition('id', $postIds);
$postsWithoutComments = Posts::model()->count($criteria);

MMSHFE
شنبه 26 اردیبهشت 1394, 00:49 صبح
البته نمونه کد بالا درمورد ارتباط HAS_MANY هست ولی میشه با کمی تغییر و ایجاد مدل برای جدول واسطه و پیداکردن پستهایی که با کامنتها رابطه دارن ازطریق جدول واسطه و جداکردن اونها با NotInCondition (به روش مشابه کد بالا) به هدفی که میخواین برسین.