2012-09-16 116 views
1

我需要顯示關係中一組實體的最短日期。例如。我有用戶和合同 - >用戶有很多合同,但我需要顯示合同的最短日期。Symfony 2 - 僅顯示OneToMany關係中的一個實體

下面是代碼:

class User implements UserInterface 
{ 
/** 
* @ORM\OneToMany(targetEntity="Comp\ContractBundle\Entity\Contract", mappedBy="user_id") 
* @ORM\OrderBy({"id" = "DESC"}) 
* 
*/ 
private $contracts; 
} 

class Contract 
{ 
/** 
* @var string $datastart 
* 
* @ORM\Column(name="datastart", type="datetime") 
*/ 
private $datastart; 

/** 
* @var string $dataend 
* 
* @ORM\Column(name="dataend", type="datetime") 
*/ 
private $dataend; 

/** 
* @var integer $user_id 
* 
* @ORM\ManyToOne(targetEntity="Comp\AuthBundle\Entity\User") 
* @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
*/ 
private $user_id; 
} 

class UserType extends AbstractType 
{ 

public function buildForm(FormBuilder $builder, array $options){ 

    #... other data 
    $builder->add('contracts','collection', array(
       'type' => new ContractType() 
      )); 
} 
public function getName() 
{ 
    return 'User'; 
} 

public function getDefaultOptions(array $options) 
{ 
    return array(
     'data_class' => 'Comp\AuthBundle\Entity\User', 
    ); 
} 
} 

而且合約類型:

class ContractType extends AbstractType 
{ 

public function buildForm(FormBuilder $builder, array $options){ 
    $builder->add('name','text'); 
    $builder->add('datastart','datetime'); 
} 

public function getName() 
{ 
    return 'Contract'; 
} 

public function getDefaultOptions(array $options) 
{ 
    return array(
     'data_class' => 'Comp\ContractBundle\Entity\Contract', 
    ); 
} 
} 

的問題是,我得到有關該用戶實體的每個實體 - 我只是需要獲取一個。如果你知道一個很好的例子 - 那會很好。

回答

0

變化合同實體字段類型從收集,以及谷歌的query_builder attribute of entity field type

在該屬性中,您可以傳遞閉包(返回QueryBuilder)或QueryBuilder本身,您可以在其中檢索給定關係中的特定記錄。

相關問題