Страница 1 из 1

Scope + With + CDbExpression

Добавлено: 2012.11.13, 10:19
marksv
Здравствуйте!
Могли бы вы мне подсказать, что я не правильно делаю. В общем есть две модели: score и skills. В модели score создал scope с параметром:

Код: Выделить всё

public function sumHardSkills($projectID)
    {
        $this->getDbCriteria()->mergeWith(array(
            'select' => new CDbExpression ( "SUM(value) AS sum"),
            'condition' => 'project_id = '.$projectID.' AND type = "hard"',
            'group' => 'project_id',
        ));
        return $this;
    }
В той же таблице прописал relation:

Код: Выделить всё

public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
            'skill'=>array(self::BELONGS_TO, 'Skill', 'skill_id'),
        );
    }
 
Пытаюсь найти запись таким образом:

Код: Выделить всё

$sumHardSkills = Score::model()->with('skill')->sumHardSkills($project->id)->findAll();
 
но получаю такую ошибку:
Error 500
trim() expects parameter 1 to be string, array given
если with убрать, то работает нормально, но во второй таблице лежит поле type, которое участвует в запросе WHERE.
При этом, если убрать из select - new CDbExpression ( "SUM(value) AS sum"), то можно искать записи вместе с with.
А вместе не получается все сделать. Работаю над проектом уже вторые сутки, голова уже мало чего соображает, даже не знаю с чего начать копать..

p.s. Еще пробовал указать with сразу в scope, но выходит та же самая ошибка

Re: Scope + With + CDbExpression

Добавлено: 2012.11.13, 12:09
Ryadnov
а если просто 'select' => "SUM(value) AS sum" ?