проблема с генерацией запроса




<?php

class Product extends CActiveRecord

{

    public static function model($className=__CLASS__)

    {

        return parent::model($className);

    }

    

    public function tableName()

    {

        return 'products';

    }

    

    public function primaryKey()

    {

        return 'id';

    }

        

    public function relations()

    {

        return array(

            'categories'=>array(self::MANY_MANY, 'Category', 

                'product_categories(prod_id, cat_id)'),

                

            'images'=>array(self::HAS_MANY, 'Image', 'parent_id'),

            

            'sizes'=>array(self::MANY_MANY, 'Size', 

                'product_sizes(prod_id, size_id)'),

                

            'colors'=>array(self::MANY_MANY, 'Color',

                'product_colors(prod_id, color_id)'),

                

            'manufacturer'=>array(self::BELONGS_TO, 'Manufacturer', 'man_id'),

        );

    }

    

    public function scopes()

    {

        $a = $this->getTableAlias( false, true );

        

        return array(

            'users'=>array(

                'condition'=>$a . '.show=1',

            ),

        );

    }

}






$products = Product::model()->users()->with('categories', 'images')->findAll('categories.type=:type', array(':type'=>$cat));



когда в запрос добавляю скоп то он не отрабатывает, в чем может быть проблема

Какие-нибудь подробности о запросе? Ошибка? Сгенерированный код SQL из лога? Так будет намного легче разобраться :)

ну на самом деле запрос отрабатывается, но не болле того, далее мне нужно считать полученные значения но так как возвращается пустота то ничего не могу сделать, а как получить сгенерированный sql?

В конфиге включить веб лог (раздел components):




'log'=>array(

    'class'=>'CLogRouter',

    'routes'=>array(

        array(

            'class'=>'CWebLogRoute',

        ),

        array(

            'class'=>'CProfileLogRoute',

        ),

    ),

),




И в настрйоки компонента db добавить:




'db'=>array(

    'enableProfiling'   =>  true,

    'enableParamLogging'=>  true,

),



Все запросы отобразятся внизу страницы.

Сделал все как написали, не помогло

вот контроллер




<?php

class IndexAction extends CAction

{

	public function run($cat)

	{

		$products = Product::model()->users()->with('categories', 'images')->findAll('categories.type=:type', array(':type'=>$cat));

		

		$title = $products[0]->categories[0]->title;

		

		$this->getController()->pageTitle = Yii::app()->name . ' - ' . $title;

		

		$this->controller->render('index', array(

			'products'=>$products,

			'cat'=>$cat,

		));

	}

}



выдает ошибку

так как нечего извлечь из $products

А как должно помочь отображение запроса? :) Просто нужно посмотреть на него и определить, так ли он выглядит, как хотелось бы.

А что посмотреть? как посмотреть?

Внизу страницы должно быть что-то вроде такого: 1951

queries.PNG

Нужно найти запрос на выборку продуктов (будет самый большой, наверное) и убедиться, что там что-то не так. Но даже если тут кто-то увидит очевидную ошибку, опыт в использовании лога никогда не помешает :)

всем спасибо разобрался