首页 > 解决方案 > crudcontroller 中基于当前登录用户或用户 ID 的实体数据

问题描述

我是 Symfony 的新手,我已经学到了很多东西,但是现在我遇到了一个我找不到答案的问题。

我有一个使用实体(例如)文章的 crudcontroller,但数据库中的文章有不同的用户 ID。

crudcontroler 必须只显示当前登录用户/用户 ID 的文章。我知道如何获取用户 ID,但我不知道如何操作实体以仅获取特定用户的文章以显示在 crudcontroller 中。

示例:
用户 ID 为 5 的用户已登录仪表板。仅在 crudcontroller 中获取用户 ID 为 5 的文章。不要获取或显示任何其他内容。

Symfony 版本:5.2
Easyadmin:3.2

我希望有人能把我推向正确的方向。目前正在把我的头发拉出来。在 Google 上找不到关于此主题的任何内容。

编辑:

我终于找到了使用 createIndexQueryBuilder() 进行更多控制的方法。我已经用以下内容覆盖了那个:

    public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
{
    $response = parent::createIndexQueryBuilder($searchDto,$entityDto,$fields,$filters);
    $response->where('entity.user_id = 5);
    return $response;
}

但是然后我收到此错误:

[语义错误] 第 0 行,'user_id = 5' 附近的第 65 列:错误:App\Entity\RepairServices 类没有名为 user_id 的字段或关联

没错,因为 user_id 不是实体的一部分,但它在数据库中,我需要检查它。我怎样才能做到这一点?

标签: symfonydoctrine-ormentitysymfony5easyadmin

解决方案


推荐阅读