Sql Symfony 3条令存储库连接和阵列
我正在处理symfony 3,我的存储库中的生成器出现了一些问题 工作原理: 我有一个朋友,他有很多信息,比如名字,游戏等等。。。 和用户通过关系OneTONE链接 我从我的发布实体中向您发送一部分Sql Symfony 3条令存储库连接和阵列,sql,symfony,doctrine-orm,Sql,Symfony,Doctrine Orm,我正在处理symfony 3,我的存储库中的生成器出现了一些问题 工作原理: 我有一个朋友,他有很多信息,比如名字,游戏等等。。。 和用户通过关系OneTONE链接 我从我的发布实体中向您发送一部分 class Announce { /** * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO
class Announce
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="Wolk\UsersBundle\Entity\User")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @var string
*
* @ORM\Column(name="game", type="string", length=255)
*/
private $game;
Etc...
现在您可以看到我的存储库了
public function byResearch($role, $game, $region, $language, $rank, $gamemode, $matchtype, $platform)
{
$qb = $this->createQueryBuilder('u')
->select('u');
if ($language != null) {
$qb->join('u.user' , 's');
$qb->addSelect('s');
$qb->andWhere('s.language like \''.$language.'\'');
}
if ($gamemode!= null) {
$qb->andWhere('u.gamemode = \''.$gamemode.'\'');
}
if ($matchtype!= null) {
$qb->andWhere('u.matchtype = \''.$matchtype.'\'');
}
if ($region!= null) {
$qb->andWhere('u.region = \''.$region.'\'');
}
if ($rank!= null) {
$qb->andWhere('u.rank like \'%'.$rank.'%\'');
}
if ($platform!= null) {
$qb->andWhere('u.platform like \'%'.$platform.'%\'');
}
if ($game!= null) {
$qb->andWhere('u.game = \''.$game.'\'');
}
if ($role!= null) {
foreach($role as $itm1)
{
$qb->andWhere('u.role like \'%'.$itm1.'%\'' );
}
}
$qb->andwhere('u.active = :active');
$qb->setParameter('active', '1');
$qb->orderBy('u.date', 'DESC');
return $qb->getQuery()->getResult();
}
我的问题是关于我的用户的语言
人们将只搜索法语、德语、英语,所有用户的所有语言都在实体用户中
User.Language=Array('fr','en')//诸如此类
事实上,我在我的网站上看到了这个结果(来自profiler)
我真的不知道语言搜索出了什么问题
Join对于一个关系网来说可能是错误的
也许数组的“Where like”不是好的解决方案
一天以来我一直在搜索,不知道哪些东西不起作用,所以我希望你能在这方面帮助我:)
如果您需要更多信息,我们很高兴您忘记在语言值周围添加百分号。应该是:
$qb->andWhere('s.language like \'%'.$language.'%\'');
您忘了在语言值周围添加百分号。应该是:
$qb->andWhere('s.language like \'%'.$language.'%\'');
对不起,我不明白你真正的问题是什么。你能换一种说法吗?如果($language!=null){$qb->join('u.user','s');$qb->addSelect('s');$qb->andWhere('s.language like\'.$language.''''.\''.');}这是我的问题,我在搜索时没有结果,也不知道为什么,例如,我的搜索有fr语言,我的公告有fr语言,我没有结果。我真的不知道为什么抱歉,我不明白你的实际问题是什么。你能换一种说法吗?如果($language!=null){$qb->join('u.user','s');$qb->addSelect('s');$qb->andWhere('s.language like\'.$language.''''.\''.');}这是我的问题,我在搜索时没有结果,也不知道为什么,例如,我的搜索有fr语言,我的公告有fr语言,我没有结果。我真的不知道为什么这么感谢你,我花了这么多时间来解决这个问题;)非常感谢,我花了这么多时间来解决这个问题;)