получить внешний ключ в Yii - PullRequest
0 голосов
/ 24 января 2012

У меня есть база данных, как

 ======= Group ========
 id
 name

 ======= Member ========
 id
 group_id
 firstname
 secondname
 membersince

Теперь в моем файле группового контроллера я использовал обновление действия для обновления моделей

public function actionUpdate($id)
  {
    $model=$this->loadModel($id);
    $member = Member::model()->findByPk($_GET['id']);

    if(isset($_POST['Group']))
    {
      $model->attributes=$_POST['Group'];
      if($model->save())
      {
        $member->attributes = $_POST['Member'];
        $member->group_id = $model->id;
        if($member->save())
        {
          $this->redirect(array('view','id'=>$model->id));
        }
      }
      $this->redirect(array('view','id'=>$model->id));
    }

    $this->render('create',array(
      'model'=>$model,
      'member'=>$member,
    ));
  }

Теперь, когда у меня есть две модели Group и Member, и в файле контроллера группы я сохраняю атрибуты члена. Так что моя проблема в том, когда я использую эту строку $member = Member::model()->findByPk($_GET['id']); для получения group_id от члена таблицы, где я могу получить полные поля для группы. Так может кто-нибудь сказать мне, как получить group_id из этой таблицы. Я искал documntation, но не получил никакого поля, как findByFk. Так что, пожалуйста, наведите меня.

Ответы [ 2 ]

0 голосов
/ 24 января 2012

Вы можете использовать findByAttributes()

$member = Member::model()->findByAttributes(array('group_id'=>$_GET['id']));
0 голосов
/ 24 января 2012

Отношение между Группой и Участником - ОТ ОДНОГО к МНОГОМУ, поэтому для одного идентификатора группы может существовать более одного члена, и поведение ваших действий выглядит не совсем корректно.

В любом случае, код, который выищем должно быть следующее:

$member = Member::model()->findByAttributes(array('group_id', $_GET['id']));

Здесь задокументировано: http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findByAttributes-detail

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