Дублируется метод prepare() в ActiveQuery

Уже исправленные репорты или принятые предложения
Ответить
evgenmil
Сообщения: 1
Зарегистрирован: 2015.11.20, 07:19

Дублируется метод prepare() в ActiveQuery

Сообщение evgenmil »

Здравствуйте.
Подскажите, пожалуйста, может конечно, я что-то делаю не так.
Делаю простое наследование модели по типу (по категории товара).

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

namespace app\models;
use app\models\query\GoodPhoneQuery;

class GoodPhone extends GoodItems
{
    /**
     * @inheritdoc
     * @return \app\models\query\GoodPhoneQuery the active query used by this AR class.
     */
    public static function find()
    {
        return new GoodPhoneQuery(get_called_class());
    }
}
app\models\query\GoodPhoneQuery :

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

namespace app\models\query;
use yii\db\ActiveQuery;

class GoodPhoneQuery extends ActiveQuery
{
    public function prepare($builder)
    {
        $this->distinct();
        $this->joinWith('goods.category');
        $this->andWhere('ix_category_goods = 74'); // категория товара хранится в таблице category
        return parent::prepare($builder);
    }
}
Делаю запрос:

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

public function actionSelectPhone()
    {
        $query = GoodPhone::find();
        VarDumper::dump($query->count(), 3, true);
    }
Появляется исключение `SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'goods'.`
Вывел sql через `getRawSql()` понял, что метод prepare() отработал два раза.

В чем может быть причина? и правильно ли я делаю?

Заранее благодарю!
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Дублируется метод prepare() в ActiveQuery

Сообщение lynicidn »

$this->joinWith('goods.category');

алиас проверь, говорит что goods уже занят
Ответить