QueryBuilder无效的patheexpression.必须是statefieldpatheexpression.



尝试获取id为DISTINCT的所有supplierUsers,并对结果进行合并。

获取所有结果的SQL查询如下所示

SELECT DISTINCT supplier_user_id FROM job_item_quote

获取上述查询的查询生成器。

$qb = $this->createQueryBuilder('a')
->select('a.supplierUser')
->distinct(true);
$result = $qb->getQuery()->getResult();

输出getQuery()。这正是我想要的。

SELECT DISTINCT a.supplierUser FROM ProjectEntitiesJobItemQuote a

尝试获取不同用户

时抛出的错误
[Semantical Error] line 0, col 18 near 'supplierUser,': Error: Invalid PathExpression. Must be a StateFieldPathExpression.

我试过为supplierUser添加连接,希望它能修复。抛出相同的错误。

JobItemQuote实体
/**
* @ORMEntity(repositoryClass="ProjectRepositoriesJobItemQuoteJobItemQuoteRepository")
* @ORMTable(name="job_item_quote")
*/
class JobItemQuote extends BaseEntity
{
public static $joins = [
'supplierUser' => SupplierUser::class,
'jobItem' => JobItem::class
];
/**
* @ORMId
* @ORMGeneratedValue
* @ORMColumn(type="integer")
* @var int
*/
protected $id; // thekey
/**
* @ORMManyToOne(targetEntity="JobItem", inversedBy="quotes")
* @var JobItem
*/
protected $jobItem;
/**
* @ORMManyToOne(targetEntity="SupplierUser")
* @var SupplierUser
*/
protected $supplierUser;

....
}

SupplierUser实体
/**
* @ORMEntity(repositoryClass="ProjectRepositoriesSupplierUserSupplierUserRepository")
* @ORMTable(name="supplier_user")
*/

class SupplierUser extends User {
public static $joins = [
'supplier' => Supplier::class,
'supplierGroup' => SupplierGroup::class
];
/**
* @ORMOneToOne(targetEntity="Supplier", inversedBy="supplierUser", cascade={"persist"})
* @var Supplier
*/
protected $supplier;
/**
* @ORMManyToOne(targetEntity="SupplierGroup")
* @var Group
*/
protected $supplierGroup;
....
}

您需要检索与JobItemQuote相关联的supplierUsers列表,因此您应该在JobItemQuoteRepository中查询joinsupplierUsers,您可以在下面的示例中找到:

$qb = $this->createQueryBuilder('jiq')
->select('su')
->join(SupplierUser::class, 'su', Join::With, 'su.id = jiq.supplierUser')
->distinct(true)
;
$result = $qb->getQuery()->getResult();

通过此查询,您将拥有与JobsItemQuote(明显)相关联的SupplierUser列表。

相关内容

  • 没有找到相关文章

最新更新