0

我尝试生成此查询。

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

但这给了我最新的工作,没有任何空缺条件作为 id。

并尝试在 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;
    }

不工作仍然给我最新的工作,没有空缺的条件。

谁能帮我。

4

1 回答 1

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

于 2013-09-10T11:15:00.723 回答