簡體   English   中英

Symfony 2-僅顯示OneToMany關系中的一個實體

[英]Symfony 2 - show only one entity from OneToMany relationship

我需要顯示關系中一組實體的最小日期。 例如。 我有用戶和合同->用戶有許多合同,但是我需要顯示合同的最短日期。

這是代碼:

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',
    );
}
}

和ContractType:

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',
    );
}
}

問題是,我獲得了與用戶實體相關的每個實體-我只需要獲取一個即可。 如果您知道任何好的示例,那就太好了。

合同字段類型從集合更改為實體 ,然后將google 更改為實體字段類型的query_builder屬性

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM