Чтение строк умножения из базы данных на Yii Framework - PullRequest
1 голос
/ 19 июня 2011

Я думаю, что операции с базами данных не очень хорошо объяснены в руководстве.Я не мог этого понять.Из-за этого у меня есть вопрос.Я спросил это на форумах Yii, но ответа нет.Это моя таблица соцсети, например.

+------------+---------------------------+--------------+--------------+---------------+
| socials_ID | socials_link              | socials_type | socials_user | socials_order |
+------------+---------------------------+--------------+--------------+---------------+
|         48 | link                      |            8 |            1 |             4 |
|         47 | blablabla                 |           11 |            1 |             3 |
|        301 | userlinkuse               |            9 |            1 |             6 |
+------------+---------------------------+--------------+--------------+---------------+

Я хочу получить из этой таблицы все данные, столбец socials_user которых равен 1Может быть несколько строк (в этом примере 3 строки).

Какой метод я должен использовать?Я пытаюсь это:

                $allSocial = '';
                $socials=Socials::model()->findByAttributes(array('socials_user'=>1));
                foreach ($socials as $social)
                {
                        $type = $social["socials_type"];
                        $allSocial .= $type . ",";
                }
                return $allSocial;

но это возвращает 4, 1, 8, 1, 4.(Первая буква / номер каждого столбца в первой строке)

Как я могу его использовать?findByAttributes AR добавляет LIMIT 1; в SQL?

Ответы [ 3 ]

5 голосов
/ 19 июня 2011

Используйте этот метод для получения записей из таблицы со значением столбца socials_user, равным 1.

$socials=Socials::model()->findAll('socials_user=:socials_user', array(':socials_user'=>1));
3 голосов
/ 19 июня 2011

Вы используете модель из YII. Модели всегда представляют один Объект в YII. Вот почему, похоже, есть LIMIT 1, как вы его описали.

Вам нужно запросить базу данных вместо того, чтобы вернуть набор строк. Вот пример кода доступа к базе данных YII, чтобы показать, как это работает ( отсюда ):

$dataReader=$command->query();
// calling read() repeatedly until it returns false
while(($row=$dataReader->read())!==false) { ... }
// using foreach to traverse through every row of data
foreach($dataReader as $row) { ... }
// retrieving all rows at once in a single array
$rows=$dataReader->readAll();

Я не знаю, настроено ли уже соединение с базой данных, но я предполагаю, что вы уже используете базу данных. Так что это то, что вам нужно для доступа к объекту DB Command, чтобы затем вызвать query() ( отсюда ):

$connection=Yii::app()->db;   // assuming you have configured a "db" connection
// If not, you may explicitly create a connection:
// $connection=new CDbConnection($dsn,$username,$password);
$command=$connection->createCommand($sql);
// if needed, the SQL statement may be updated as follows:
// $command->text=$newSQL;

Надеюсь, эта информация пригодится вам.

0 голосов
/ 01 июля 2011

еще лучше, используйте findAllByAttributes.

Ваш код должен быть:

$socials=Socials::model()->findAllByAttributes(array('socials_user'=>1));

Док: http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAllByAttributes-detail

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...