【问题标题】:Yii Generate query with a relation condition (ActiveRecord)Yii 使用关系条件生成查询(ActiveRecord)
【发布时间】:2013-09-10 19:15:00
【问题描述】:

我尝试生成这个查询。

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

而且不工作还是给我最新的工作没有空缺的条件。

谁能帮帮我。

【问题讨论】:

    标签: yii


    【解决方案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

    【讨论】:

    • 我试试这个,但有限制的问题。 id 就像我需要检查 v.status 和另一个不是 id 的字段并获取最新的工作一样。
    猜你喜欢
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    相关资源
    最近更新 更多