Symfony 2 - 仅显示一对一关系中的一个实体



我需要显示关系中一组实体的最小日期。例如。我有用户和合同 ->用户有许多合同,但我需要显示合同中的最短日期。

这是代码:

class User implements UserInterface
{
/**
* @ORMOneToMany(targetEntity="CompContractBundleEntityContract", mappedBy="user_id")
* @ORMOrderBy({"id" = "DESC"})
*
*/
private $contracts;
}
class Contract
{
/**
 * @var string $datastart
 *
 * @ORMColumn(name="datastart", type="datetime")
 */
private $datastart;
/**
 * @var string $dataend
 *
 * @ORMColumn(name="dataend", type="datetime")
 */
private $dataend;
/**
 * @var integer $user_id
 *
 * @ORMManyToOne(targetEntity="CompAuthBundleEntityUser")
 * @ORMJoinColumn(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' =>  'CompAuthBundleEntityUser',
    );
}
}

和合同类型:

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

问题是,我得到了与用户实体相关的每个实体 - 我只需要获取一个。如果你知道任何好的例子 - 那就太好了。

合同字段类型从集合更改为实体,并在 google 上搜索实体字段类型的query_builder属性。

在该属性中,您可以传递闭包(返回 QueryBuilder)或 QueryBuilder 本身,您可以在其中从给定的关系中检索特定记录。

相关内容

  • 没有找到相关文章

最新更新