Странный баг. Нужен хелп.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
wokster
Сообщения: 308
Зарегистрирован: 2013.09.06, 14:12
Контактная информация:

Странный баг. Нужен хелп.

Сообщение wokster »

Есть две связанные таблицы. Продукты и картинки.

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

    public function getImages()
    {
        return $this->hasMany(ProductImg::className(),['productID'=>'productID']);
    }
    public function getDefaultImg()
    {
        return $this->hasOne(ProductImg::className(),['photoID'=>'default_picture']);
    }
    public function getImgName($size='filename')
    {
        $data = self::getDefaultImg()->one();
        if(empty($data[$size]))
            return '/images/nophoto.jpg';
        return self::IMGURL.$data[$size];
    }
}
Странная структура базы осталась от другого проекта на shopscript. Но чудо не в этом.
Если сделать так

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

$query = Product::find()->with('defaultImg')->where(['categoryID'=>$model->getChildCatsId()]);
        $countQuery = clone $query;
        $pages = new Pagination(['totalCount' => $countQuery->count()]);
        $products = $query->offset($pages->offset)
            ->limit($pages->limit)
            ->all();
Получаю все данные, но связь пустая. Просто пустые значения. А если так:

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

$prod = Product::find()->where(['>','viewed_times',1000])->orderBy(new Expression('rand()'))->limit(24)->all();
Получаю только картинки из связанной модели. Остальные данные пустые.
Ломаю голову в чем беда. На локалке все работало. Перенес на сервер. php 5.61 и в соседней папке другой проект на yii2 работает на ура, то есть настройки сервера не при чем. Грешу на базу, но ума не приложу где?

Вот фрагмент из дебага:

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

SELECT * FROM `product_img` WHERE 0=1
Блаблаблаkh.ua/yii/common/models/Product.php (122)
Блаблаблаkh.ua/yii/frontend/views/site/_product.php (16)
Блаблаблаkh.ua/yii/frontend/views/site/category.php (48)
select_type: SIMPLE
Extra: Impossible WHERE
Не совсем понимаю значения Extra: Impossible WHERE
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Странный баг. Нужен хелп.

Сообщение zelenin »

->with('defaultImg') - если убрать это из первого запроса?
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: Странный баг. Нужен хелп.

Сообщение dmg »

я бы взял из debug sql-запросы и выполнил их в mysql.
Аватара пользователя
wokster
Сообщения: 308
Зарегистрирован: 2013.09.06, 14:12
Контактная информация:

Re: Странный баг. Нужен хелп.

Сообщение wokster »

zelenin писал(а):->with('defaultImg') - если убрать это из первого запроса?
убрал и убрал саму связь. Стал брать из images (hasmany) первую картинку в массиве. Работает. НО!!! ЗАхожу в товар. Часть данных отсутствует в частности описание. Такое ощущение, что select выбирает половину столбцов, потом кашляет и перестает выбирать. Видимо из-за этого и эта связь не работала. Где-то в базе дыра.
raketa
Сообщения: 131
Зарегистрирован: 2011.07.28, 17:29

Re: Странный баг. Нужен хелп.

Сообщение raketa »

база навряд ли косячит
$this и self:: нигде не запутали
Ответить