ошибка возвращения данных

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Alex@
Сообщения: 568
Зарегистрирован: 2014.12.16, 09:24

ошибка возвращения данных

Сообщение Alex@ »

есть таблица c_data

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

CREATE TABLE IF NOT EXISTS `c_data` (
  `id` int(11) NOT NULL,
  `state` tinyint(4) NOT NULL,
  `dateGreate` int(11) NOT NULL,
   'data'  varchar(128) NOT NULL,  
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

данные в таблице 
(1,1,1420893673, 'exampal'),
 
есть таблица c_vagon

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

CREATE TABLE IF NOT EXISTS `c_vagon` (
  `id` int(11) NOT NULL,
  `name` varchar(128) NOT NULL,
  `state` tinyint(3) NOT NULL,
  `weight` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

данные в таблице 
(1, 'Все виды вагонов', 0, 1),
(2, 'Полувагон', 1, 1),
(3, 'Хоппер', 1, 2),
(4, 'Крытый двухдверный', 1, 3),
(5, 'Крытый однодверный', 1, 4)
 
таблица c_dataVagon, которая связывает таблицы c_data и c_vagon, то-есть одной записи c_data могут соответствовать несколько
записей таблицы c_vagon.

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

CREATE TABLE IF NOT EXISTS `c_dataVagon` (
  `id` int(11) NOT NULL,
  `id_data` int(11) NOT NULL,
  `id_vagon` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

данные в таблице 
(1, 1, 2),
(2, 1, 3),
(3, 1, 4),
 

в моделе dataVagon сделал сделал

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

return array(
            'vagon' => array(self::HAS_ONE,'Vagon','id'),
        );
 
и написал функцию которая возвращает массив вагонов одной записи из таблицы c_data:

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

public static function returnVagon($id){ //$id - это айди записи таблицы c_data
        $result = array();
        $datas = VagonObayvRepair::model()->findAll(
            array(
               'condition'=>'id_data = :id',
               'order' => 'id_vagon', 
               'params'=>array(
                 ':id'=>$id,
               )
            ));
        foreach($datas as $val){        
            $result[] = $val->vagon->name;
        }
        return $result;
        
    } 
массив который она возвращает при id = 1
/*косят тут мне почему-то возвращает эта запись хотя индентификатор c_dataVagon равен 2, тоесть тут должна быть Полувагон*/
1, 'Все виды вагонов'
2, 'Полувагон'
3, 'Хоппер'

а должен возвращать
2, 'Полувагон'
3, 'Хоппер'
4, 'Крытый двухдверный'

Подскажите пожалуйста в чём косяк??? позарез надо....
Аватара пользователя
Barssoft
Сообщения: 726
Зарегистрирован: 2013.01.21, 16:03

Re: ошибка возвращения данных

Сообщение Barssoft »

А почему бы связь в самой модели не прописать, зачем эта функция?
Alex@
Сообщения: 568
Зарегистрирован: 2014.12.16, 09:24

Re: ошибка возвращения данных

Сообщение Alex@ »

Barssoft писал(а):А почему бы связь в самой модели не прописать, зачем эта функция?
Вопрос не в этом, а в том
почему токай результат возвращается!
Аватара пользователя
Barssoft
Сообщения: 726
Зарегистрирован: 2013.01.21, 16:03

Re: ошибка возвращения данных

Сообщение Barssoft »

Попробуйте связь self::BELONGS_TO
Alex@
Сообщения: 568
Зарегистрирован: 2014.12.16, 09:24

Re: ошибка возвращения данных

Сообщение Alex@ »

Barssoft писал(а):Попробуйте связь self::BELONGS_TO
Получилось, теперь всё нормально возвращает, только я не могу понять почему такая штука была!
Ответить