получение двух столбцов с отношением

#php #symfony-1.4 #doctrine-1.2

#php #symfony-1.4 #доктрина-1.2

Вопрос:

я изучаю Symfony и Doctrine с помощью Jobeet. Я хотел бы добавить несколько изменений. по умолчанию:http://www.symfony-project.org/jobeet/1_4/Doctrine/en/03

 JobeetCategory:
  actAs: { Timestampable: ~ }
  columns:
    name: { type: string(255), notnull: true, unique: true }

JobeetJob:
  actAs: { Timestampable: ~ }
  columns:
    category_id:  { type: integer, notnull: true }
 (...)
  relations:
    JobeetCategory: { onDelete: CASCADE, local: category_id, foreign: id, foreignAlias: JobeetJobs } 
  

и если я перейду к форме (создам новую), у меня будет:
http://www.symfony-project.org/images/jobeet/1_4/03/job.png

Идентификатор категории — список выбора

//BaseJobeetJobForm.class.php :

  'category_id'  => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('JobeetCategory'), 'add_empty' => false)),
  

//sfFormDoctrine.class.php :

   protected function getRelatedModelName($alias)
  {
    $table = Doctrine_Core::getTable($this->getModelName());

    if (!$table->hasRelation($alias))
    {
      throw new InvalidArgumentException(sprintf('The "%s" model has to "%s" relation.', $this->getModelName(), $alias));
    }

    $relation = $table->getRelation($alias);

    return $relation['class'];
  }
  

как я могу сделать что-то вроде:

 JobeetCategory:
  actAs: { Timestampable: ~ }
  columns:
    name: { type: string(255), notnull: true, unique: true }
    nametwo: { type: string(255), notnull: true, unique: true }

JobeetJob:
  actAs: { Timestampable: ~ }
  columns:
    category_id:  { type: integer, notnull: true }
    nametwo_id:  { type: integer, notnull: true }
 (...)
  relations:
        JobeetCategory: { onDelete: CASCADE, local: category_id, foreign: id, foreignAlias: JobeetJobs } 
JobeetCategory: { onDelete: CASCADE, local: nametwo_id, foreign: id, foreignAlias: JobeetJobsTwo } 
  

как я могу отобразить в форме «nametwo»? я приведу два варианта списка (category_id (уже) и nametwo_id : )

Ответ №1:

Вы хотите настроить два разных отношения между jobeetjob и jobeetcategory.
Вы должны четко назвать отношение, вот так :

     JobeetJob:   
     actAs: { Timestampable: ~ }  
     columns:
       category_id:  { type: integer, notnull: true }
       nametwo_id:  { type: integer, notnull: true }  (...)   
     relations:
       JobeetCategoryOne: 
         class: JobeetCategory
         onDelete: CASCADE
         local: category_id
         foreign: id
         foreignAlias: JobeetJobs  
       JobeetCategoryTwo: 
         class: JobeetCategory
         onDelete: CASCADE
         local: nametwo_id, foreign: id,
         foreignAlias: JobeetJobsTwo 
  

Комментарии:

1. dxb: Я отредактировал ваш ответ и исправил подсветку синтаксиса. В примерах кода все строки должны быть дополнены четырьмя пробелами, чтобы SO выделил это. Должным образом исправлено.