Проблема с семейством findAll()

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
Одиночка Айс
Сообщения: 267
Зарегистрирован: 2010.02.05, 10:26
Откуда: Алма-Ата, Казахстан
Контактная информация:

Проблема с семейством findAll()

Сообщение Одиночка Айс »

При запросе:

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

<?php
    $providers=Comp::model()->findAllByAttributes('typeComp=2');
        foreach ($providers as $provider){
            echo $provider->nameComp;
            echo "<br>";
            echo CHtml::link(CHtml::encode($provider->brandComp), array('view', 'id'=>$provider->idComp));
            echo "<br>";
    }
var_dump(is_array($providers));
?>
Выводит ошибку:
Invalid argument supplied for foreach()
Хотя по идее посылается массив.

При запросе:

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

<?php
    $providers=Comp::model()->findAll('typeComp=2');
        foreach ($providers as $provider){
            echo $provider->nameComp;
            echo "<br>";
            echo CHtml::link(CHtml::encode($provider->brandComp), array('view', 'id'=>$provider->idComp));
            echo "<br>";
    }
?>
Или:

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

<?php
    $providers=Comp::model()->findAllBySql('SELECT * FROM comp WHERE typeComp=2');
        foreach ($providers as $provider){
            echo $provider->nameComp;
            echo "<br>";
            echo CHtml::link(CHtml::encode($provider->brandComp), array('view', 'id'=>$provider->idComp));
            echo "<br>";
    }
?>
Выводит все правильно, НО, столько раз, сколько записей в таблице вообще есть, то есть, в таблице имеется 4 компании: 2 с typeComp=1, и по одной с typeComp=2 и 3 соответственно, то есть выводит то все правильно, но 4 раза )))). И еще: при запросе:

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

$h=Comp::model()->count($comp->typeComp=1);
$p=Comp::model()->count($comp->typeComp=2);
$w=Comp::model()->count($comp->typeComp=3);
 
Также выводит 4, при чем без разницы с чем сравнивать $comp->typeComp (хоть с 24, ошибки не появится)
Ни любви, ни тоски, ни жалости...
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Проблема с семейством findAll()

Сообщение slavcodev »

Одиночка Айс писал(а):При запросе:

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

$providers=Comp::model()->findAllByAttributes('typeComp=2'); 

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

$providers=Comp::model()->findAllByAttributes(array('typeComp' => 2)); 
Жду Yii 3!
Аватара пользователя
Одиночка Айс
Сообщения: 267
Зарегистрирован: 2010.02.05, 10:26
Откуда: Алма-Ата, Казахстан
Контактная информация:

Re: Проблема с семейством findAll()

Сообщение Одиночка Айс »

Спасибо, ошибка пропала, но вот вывод по 4 раза также остался (((
Ни любви, ни тоски, ни жалости...
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Проблема с семейством findAll()

Сообщение slavcodev »

Также выводит 4, при чем без разницы с чем сравнивать $comp->typeComp (хоть с 24, ошибки не появится)
Я не понял что с чем нужно сравнить, но count() считает количество моделей в базе, с заданным условием.

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

$h = Comp::model()->count('typeComp = :type', array(':type' => 1));
$p = Comp::model()->count('typeComp = :type', array(':type' => 2));
$w = Comp::model()->count('typeComp = :type', array(':type' => 3)); 
Не в обиду будет сказано: заглядывайте иногда в документацию, очень часто помогает ;)
Жду Yii 3!
Аватара пользователя
Одиночка Айс
Сообщения: 267
Зарегистрирован: 2010.02.05, 10:26
Откуда: Алма-Ата, Казахстан
Контактная информация:

Re: Проблема с семейством findAll()

Сообщение Одиночка Айс »

Вау, работает :) попробую и на остальных запросах также проделать ))). Без обид ))) просто знать бы куда заглядывать )))) Пасип)))
Ни любви, ни тоски, ни жалости...
Аватара пользователя
Одиночка Айс
Сообщения: 267
Зарегистрирован: 2010.02.05, 10:26
Откуда: Алма-Ата, Казахстан
Контактная информация:

Re: Проблема с семейством findAll()

Сообщение Одиночка Айс »

Да знаю уж)))
Ни любви, ни тоски, ни жалости...
Ответить