Yii Framework Forum: Relational Active Record - выпадающие списти и т.п. по FK - Yii Framework Forum

Jump to content

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

Relational Active Record - выпадающие списти и т.п. по FK Rate Topic: -----

#1 User is offline   maks 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 01-February 09

Posted 05 March 2009 - 04:25 PM

http://www.yiiframew...ru/database.arr

с отображением сущностей которые вытягиваются по FK вроде бы все ясно

а вот как поступить с update и insert, тобишь что бы заполнялся лист для выбора значения ???

кстати

Quote

In the above, we use COMMENT keyword to describe the foreign key constraint which can be read by AR to recognize the described relationship.

каким образом проявляется при генерации модели и круд???
0

#2 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 05 March 2009 - 05:41 PM

Вот insert:


$post = new Post()
$post->title = "Yahoo";
$post->save();


А вот update:


$post = Post::model()->findByPk($_GET["id"]);
$post->title = "Yahoo";
$post->save();


Вроде бы ничего сложно. Али я чего-нить не понял?
0

#3 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 05 March 2009 - 05:46 PM

Quote

кстати

Quote

In the above, we use COMMENT keyword to describe the foreign key constraint which can be read by AR to recognize the described relationship.


каким образом проявляется при генерации модели и круд???


При генерации модели, получаешь что-то вроде


    public function relations()
    {
        return array(
            'author'=>array(self::BELONGS_TO, 'User', 'id'),
            'editor'=>array(self::BELONGS_TO, 'User', 'id'),
            'blocks'=>array(self::HAS_MANY, 'Block', 'module'),
        );
    }


А при круде должен получать выпадающий список. Кажется так и есть, но уже не помню.
0

#4 User is offline   maks 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 01-February 09

Posted 05 March 2009 - 05:59 PM

Quote

Вроде бы ничего сложно. Али я чего-нить не понял?


ну что-то подобное http://www.yiiframew...log/post.create
<?php echo CHtml::activeDropDownList($post,'status',Post::model()->statusOptions); ?>

но там статус константы
а если это таблица?

п.с. чето у меня констрейты в коментах к таблице никак не повлияли на модель...
0

#5 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 05 March 2009 - 06:26 PM

Неважно. Там самое главное, что это должен быть ассоциативный массив.

вот что-то типа:

    public function getStatusOptions()
    {
        return array(
            0=>'Draft',
            1=>'Published',
            2=>'Archived',
        );
    }


Таблицу использовать здесь уже не проблема. Выбираешь 2 столбца: id и название, а потом из этого лепишь нужного вида массив.
0

#6 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 05 March 2009 - 06:31 PM

Quote

п.с. чето у меня констрейты в коментах к таблице никак не повлияли на модель...



Комментарий должен быть что-то вроде этого:


CREATE TABLE bar
(
  id INTEGER NOT NULL PRIMARY KEY,
  fooID INTEGER
    COMMENT 'CONSTRAINT FOREIGN KEY (fooID) REFERENCES Foo(id)'
);


, где fooID - поле в исходной таблице, Foo - название связываемой таблицы, id - поле в связываемой таблице.

А вообще констрейнты в комментах - это изврат, который придуман специально для тех у кого таблицы в формате MyISAM. А вот InnoDB поддерживает констрейнты в нормальном sql-ном виде.

p.s. В sqlite констрейнты вообще кажется работать не должны: ни через комменты, ни через что.
0

#7 User is offline   maks 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 01-February 09

Posted 05 March 2009 - 07:09 PM

в общем примерно че получилось
в методе getOptions() пишем
        $A = array();
        $List=FKModel::model()->findAll();
        foreach($List as $n=>$model):
          $A[$model->ID] = $model->NAME;
        endforeach;
        return $A;

таким образом мы получаем список ну допустим стран для выбора при регистрации пользователя
0

#8 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 05 March 2009 - 08:08 PM

Молодца :)
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