Php 如何在表单中列出查询结果(EntityType)
在我的项目中,我使用数据表(用户任务)来描述创建预订记录(预订表)的数据。在表单中,我尝试接收选择列表 运行时出现错误:Php 如何在表单中列出查询结果(EntityType),php,symfony,doctrine-orm,symfony-forms,query-builder,Php,Symfony,Doctrine Orm,Symfony Forms,Query Builder,在我的项目中,我使用数据表(用户任务)来描述创建预订记录(预订表)的数据。在表单中,我尝试接收选择列表 运行时出现错误: 预期参数类型为“条令\ORM\QueryBuilder”,“数组”给定 为什么“数组”数据是错误的?什么变化 我的代码: 表格: 您应该返回querybuilder对象实例,而不是query\u builder参数的结果。因此,请按以下方式更改您的回购方法: /** * Function TaskUserListQuery * @return QueryBui
预期参数类型为“条令\ORM\QueryBuilder”,“数组”给定
为什么“数组”数据是错误的?什么变化
我的代码:
表格:
您应该返回querybuilder对象实例,而不是query\u builder参数的结果。因此,请按以下方式更改您的回购方法:
/**
* Function TaskUserListQuery
* @return QueryBuilder
*/
public function TaskUserListQuery( $userId )
{
return $this->createQueryBuilder( 't' )
->select(
't.id',
't.taskName'
)
->orderBy( 't.id', 'ASC' )
->where( 't.userId = :par1' )
->setParameter( 'par1', $userId );
}
希望此帮助您也不能调用FormView
对象上的handleRequest
方法
$tableForm = $this->createForm( 'AppBundle\Form\ReservationType',
$reservation, ['userId' => $userId,]);
$form = $tableForm->createView(); // WTF ?
$form->handleRequest( $request );
任务库
public function TaskUserListQuery( $userId )
{
return $this->createQueryBuilder( 't' )
->select('t') // in this way
->orderBy( 't.id', 'ASC' )
->where( 't.userId = :par1' )
->setParameter( 'par1', $userId );
}
在您使用selecting('t.id',…)时
QueryBuilder将返回普通数组
array:1 [▼
0 => array:2 [▼
"id" => 1
"task_name" => "New Task"
]
]
但是EntityType
需要一个对象数组,如
array:1 [▼
0 => Task {#448 ▶}
]
最后,不要忘记在buildForm
方法中添加选项'choice\u label'=>'task\u name'
。我将其替换为@return QueryBuilder
,但仍然返回一个错误:类型为“条令\ORM\QueryBuilder”,“数组”的预期参数given@user23123仅更改docblock不会更改代码返回的内容。请仔细看看Matteo的答案是否正确。hi@user23123我还更改了方法的返回值,请查看答案的代码,可能您应该更改select方法中的参数,可能它需要整个对象。让我知道
public function TaskUserListQuery( $userId )
{
return $this->createQueryBuilder( 't' )
->select('t') // in this way
->orderBy( 't.id', 'ASC' )
->where( 't.userId = :par1' )
->setParameter( 'par1', $userId );
}
array:1 [▼
0 => array:2 [▼
"id" => 1
"task_name" => "New Task"
]
]
array:1 [▼
0 => Task {#448 ▶}
]