Yii Framework Forum: множественное отношение в AR - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

множественное отношение в AR Rate Topic: -----

#1 User is offline   romanoza 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 117
  • Joined: 17-April 09
  • Location:Moscow, Russia

Posted 02 July 2009 - 01:58 AM

Привет.
Столкнулся с неведовым :)
Создал модель User, в ней отношение:
'professional' => array(self::HAS_ONE, 'Professional', 'uid'),

и Professional с отношением:
'proftypes'=>array(self::MANY_MANY, 'ProfType', 'profPropTypes(uid, user_type_id)'),

пытаюсь получить proftypes для текущего юзверя через
$user = User::model()->with('professional.proftypes')->findbyPk($id);

ну и потов ессно пытаюсь достучаться $user->professional->proftypes но этот вызов возвращает пустой массив

вот, что дает var_dump($user->professional):
[tt]        ["_attributes":"CActiveRecord":private]=>
        array(3) {
          ["id"]=>
          string(1) "8"
          ["name"]=>
          string(8) "Building"
          ["desc"]=>
          NULL
        }
[/tt]
,в котором
[tt]  ["_related":"CActiveRecord":private]=>
  array(1) {
    ["proftypes"]=>
    array(2) {
      [0]=>
      object(ProfType)#161 (10) {
[/tt]

как получить то значения?
0

#2 User is offline   andy_s 

  • Random Member Title
  • Yii
  • Group: Moderators
  • Posts: 1,526
  • Joined: 22-June 09
  • Location:Russia, Kostroma

Posted 02 July 2009 - 08:21 AM

Всё вроде выглядит верно, моя единственная догадка: возможно нужно оформить with так: with('professional', 'professional.proftypes'). Сам проверять не пробовал :-X
0

#3 User is offline   romanoza 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 117
  • Joined: 17-April 09
  • Location:Moscow, Russia

Posted 02 July 2009 - 09:34 AM

Quote

Всё вроде выглядит верно, моя единственная догадка: возможно нужно оформить with так: with('professional', 'professional.proftypes'). Сам проверять не пробовал :-X

неа :(
0

#4 User is offline   creocoder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 199
  • Joined: 09-March 09
  • Location:*.php

Posted 03 July 2009 - 07:35 PM

Проверь, является ли uid в таблице Professional первичным ключем. Либо это foreign key доставшийся от таблицы User. Если второе, то ничего удивительного в том, что ничего не работает нет.
0

#5 User is offline   romanoza 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 117
  • Joined: 17-April 09
  • Location:Moscow, Russia

Posted 04 July 2009 - 03:11 AM

Quote

Проверь, является ли uid в таблице Professional первичным ключем. Либо это foreign key доставшийся от таблицы User. Если второе, то ничего удивительного в том, что ничего не работает нет.

и первое и второе, дело в том, что данные в вардампе есть: [tt]        array(3) {
          ["id"]=>
          string(1) "8"
          ["name"]=>
          string(8) "Building"
          ["desc"]=>
          NULL
        }[/tt], но я не могу понять, как к ним обратиться
0

#6 User is offline   creocoder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 199
  • Joined: 09-March 09
  • Location:*.php

Posted 04 July 2009 - 04:28 AM

Точно это возвращает пустой массив?. Конструкция $user->professional->proftypes должна в вашем случае возвращать коллекцию объектов. var_dump косвенно об этом говорит (лучше кстати CVarDumper::dump())
0

#7 User is offline   creocoder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 199
  • Joined: 09-March 09
  • Location:*.php

Posted 04 July 2009 - 04:30 AM


  array(1) {
    ["proftypes"]=>
    array(2)

Как раз 2 объекта.

Смотрите, что скажет CVarDumper::dump($user->professional->proftypes);
0

#8 User is offline   romanoza 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 117
  • Joined: 17-April 09
  • Location:Moscow, Russia

Posted 04 July 2009 - 04:37 AM

Quote


  array(1) {
    ["proftypes"]=>
    array(2)


Как раз 2 объекта.



Смотрите, что скажет CVarDumper::dump($user->professional->proftypes);


то же, что и var_dump - array(0)
0

#9 User is offline   romanoza 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 117
  • Joined: 17-April 09
  • Location:Moscow, Russia

Posted 04 July 2009 - 04:48 AM

http://kofe.in/dump.html
вот дампы $user->professional
0

#10 User is offline   romanoza 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 117
  • Joined: 17-April 09
  • Location:Moscow, Russia

Posted 04 July 2009 - 12:06 PM

Quote

http://kofe.in/dump.html

вот дампы $user->professional


перезалил, искать значение по слову Building
0

#11 User is offline   creocoder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 199
  • Joined: 09-March 09
  • Location:*.php

Posted 04 July 2009 - 01:05 PM

Все понятно. Убирайте свойство public $proftypes из модели Professional. Зачем оно там вообще? Оно перекрывает доступ к идентификатору proftypes  описанному в relations() той же модели, т.к. имеет более высокий приоритет.
0

#12 User is offline   romanoza 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 117
  • Joined: 17-April 09
  • Location:Moscow, Russia

Posted 04 July 2009 - 02:27 PM

Quote

Все понятно. Убирайте свойство public $proftypes из модели Professional. Зачем оно там вообще? Оно перекрывает доступ к идентификатору proftypes  описанному в relations() той же модели, т.к. имеет более высокий приоритет.

мать перемать, спасибо большое, прямо 1й строчкой %)
сейчас по логу свн посмотрю, кто сделал, буду сильно ругаться
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users