1

関係にあるエンティティのグループから最小日付を表示する必要があります。例えば。ユーザーと契約があります -> ユーザーには多くの契約がありますが、契約の最小日付を表示する必要があります。

コードは次のとおりです。

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

問題は、ユーザー エンティティに関連する各エンティティを取得することです。取得する必要があるのは 1 つだけです。良い例を知っていれば、それは素晴らしいことです。

4

1 に答える 1

0

コントラクトフィールド タイプをcollectionからentityに変更し、エンティティ フィールド タイプのquery_builder属性をgoogle に変更します。

その属性では、特定の関係から特定のレコードを取得できるクロージャー (QueryBuilder を返す) または QueryBuilder 自体を渡すことができます。

于 2012-09-16T17:29:05.167 に答える