2013-09-10 2 views
0

Я пытаюсь сгенерировать этот запрос.Yii Генерировать запрос с условием отношения (ActiveRecord)

select * from jobs j inner join vacancies v on j.id = v.job_id where v.id = 2943 order by j.created_at desc limit 1

v.id просто чтобы проверить, если рабочий запрос штрафа или нет.

У меня есть какое-то условие из таблиц вакансий, необходимо сгенерировать его с помощью таблиц рабочих мест.

Я стараюсь больше, чем случай, чтобы сгенерировать его.

это отношение от модели Вакансии

'job' => array(self::BELONGS_TO, 'Jobs', 'job_id'), 

это соотношение от Вакансии модели

'vacancies' => array(self::HAS_MANY, 'Vacancies', 'job_id'), 

и это мой запрос.

$newJobs = Jobs::model()->findAll(

        array('with'=>array(
          'vacancies'=>array(
           'condition'=>'vacancies.id = 2943', 
           'order'=>'t.created_at desc', 
          ) 
         ), 
        'order'=>'t.created_at desc' 
        ,'limit'=>1 
        ) 
       ); 

, но это дает мне последние вакансии без каких-либо условий от вакансий в качестве идентификатора.

и попробуйте это с некоторыми областями в модели Jobs.

$newJobs = Jobs::model()->isOffline()->isApproved()->recent()->findAll(array(
          'with'=>array(
           'vacancies'=>array(
            'condition'=>'vacancies.id=2268' 
           ) 
          ) 
         ) 
         ); 

осциллографы

public function recent($limit=1) 
    { 
     $this->getDbCriteria()->mergeWith(array(
      'order'=>'t.created_at DESC', 
      'limit'=>$limit, 
     )); 
     return $this; 
    } 

    public function isOffline($offline = 'False') 
    { 
     $this->getDbCriteria()->mergeWith(array(
      'condition'=>"t.offline = '$offline' OR t.offline is null", 
     )); 
     return $this; 
    } 

    public function isApproved($approved = 'False') 
    { 
     $this->getDbCriteria()->mergeWith(array(
      'condition'=>"t.approved= '$approved'", 
     )); 
     return $this; 
    } 

И не работает до сих пор дают мне новые вакансии без условия из вакансий.

Может ли кто-нибудь мне помочь.

ответ

1

Попробуйте это:

    ... 
        array('with'=>array(
         'vacancies'=>array(
          'alias'=>'v', 
          'joinType'=>'INNER JOIN', 
          'condition'=>'v.id = 2943', 
          'order'=>'t.created_at desc', 
         ) 
        ), 
        ... 

http://www.yiiframework.com/doc/guide/1.1/en/database.arr#performing-relational-query-without-getting-related-models

+0

Пытаюсь это, но проблема с лимитом. Идентификатор, как раз в случае, мне нужно проверить v.status и другое поле id и получить последние задания. –

Смежные вопросы