gpt4 book ai didi

symfony - 有没有办法使用自定义选择器(查找方法)来选择用户?

转载 作者:行者123 更新时间:2023-12-02 16:49:54 24 4
gpt4 key购买 nike

我正在使用FriendsOfSymfony/FOSUserBundle(Doctrine)。一切正常,除了我想使用自定义选择器(查找方法)选择用户,因为我想制作一些关节。

有没有比 FoS 捆绑代码更改更好的方法?

更新:

我知道使用自定义 findOneBy... (来 self 自己的存储库类)的可能性,但我认为这种方式是不正确的:当您看到此方法的定义时,您不会期望一些副作用,如果你重新声明它,你将永远拥有它们。从我的角度来看,我应该创建一些方法 findOneBy...Join... 并在自定义 UserManager 或其某种委托(delegate)中使用它,以便在 Controller 中检索$this->getUser().

更新2:在我找到解决方案后...我不认为我的问题与 Extends UserManager in Symfony2 with FOSUserBundle 重复。是的,扩展是关键,但在这个问题中讨论了如何扩展(某些特定的类),在我的答案中,我得到的答案是扩展是我所需要的。我的意思是,很难找到这个问题的解决方案,类似于我的问题(至少,我在提问之前尝试过)。

最佳答案

我的猜测是您正在通过 FOSUB UserManager 处理选择/插入/更新,
$this->container->get('fos_user.user_manager'); 及其 findUserByXXX

要做到这一点,Put12co22mer2 是对的,您需要的第一件事是创建一个 custom Repository class .

方法 findUserByXXX 使用 EntityRepository::findOneBy 方法。
因此,您只需在自定义存储库中重新创建默认的 findOneBy 方法即可修改 UserManager::findUserBy 方法的行为。

示例:

// src/UserBundle/Entity/Repository/YourUserRepository.php

/**
* Custom findOneBy.
*/
public function findOneBy(array $criteria, array $orderBy = null)
{
// Build you custom Query with additional joins
}

像这样,默认的 UserManager::findUserByXXX 方法将使用您的 YourUserRepository::findOneBy 方法,因此您可以通过调用它们来获得预期的结果。

如果您想向UserManager添加一些自定义方法,override it .

关于symfony - 有没有办法使用自定义选择器(查找方法)来选择用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36106198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com