标签: doctrine-orm

我可以在学说中的 WHERE IN ARRAY 查询中实现 LIKE 条件吗?

我正在使用 Doctrine QueryBuilder 创建一个查询,以通过电子邮件结尾选择一群用户。我有一系列电子邮件结尾,例如['@someservice.com', '@anotherservice.com' ].

我知道我可以通过WHERE IN以下方式在数组中选择字符串:

$qb= $this
    ->createQueryBuilder('u')
    ->orderBy('u.id', 'asc')
    ->where('u.email IN (:emails)')
    ->setParameter('emails', [
        '@someservice.com',
        '@anotherservice.com'
    ]);
Run Code Online (Sandbox Code Playgroud)

然而,这个查询字符串的确切出现次数,因此查询当然会返回一个空的结果集。

这就是为什么我想在数组上做一个 LIKE 搜索,但做一些事情:

$qb= $this
    ->createQueryBuilder('u')
    ->orderBy('u.id', 'asc')
    ->where('u.email LIKE IN (:emails)')
    ->setParameter('emails', [
        '%@someservice.com',
        '%@anotherservice.com'
    ]);
Run Code Online (Sandbox Code Playgroud)

不幸的是失败了。是否有一些语法糖可以进行这样的查询,还是我必须用一堆orHaving调用进行查询?

php arrays symfony doctrine-orm sql-like

0
推荐指数
1
解决办法
2330
查看次数

排除 findAll Symfony2 中的一些字段

我使用此代码获取数据库中的所有用户

$users= $this->getDoctrine()
        ->getRepository('AppBundle:Users')
        ->findAll();
        return $this->render('livre/users.html.twig',array(
            'users' => $users,
        ));
Run Code Online (Sandbox Code Playgroud)

但我只想得到一些字段 sush as nameemail并隐藏像password..这样的字段。谢谢。

symfony doctrine-orm

0
推荐指数
1
解决办法
1933
查看次数

在 Doctrine2 中获取上个月的数据

我需要上个月创建的表中的所有数据。我创建了下面的代码,但它在 DQL 中给出了以下错误,但是运行它时 SQL 查询是正确的。

错误 :

[Syntax Error] line 0, col 138: Error: Expected Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS, got '-' 
Run Code Online (Sandbox Code Playgroud)

代码是;

$compCases = $this->getDoctrine()
            ->getRepository('EFuturesCrmBundle:CasesCompensation')
            ->createQueryBuilder('c')
            ->select('c.id')
            ->where('c.caseStatus =:status')
            ->andWhere('YEAR(c.caseStatusDate) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)')
            ->andWhere('MONTH(c.caseStatusDate) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)')
            ->setParameter('status', 'resolve')
            ->getQuery()
            ->getResult();
Run Code Online (Sandbox Code Playgroud)

DQL 不支持INTERVAL Doctrine2 怎么可能呢?

symfony doctrine-orm

0
推荐指数
1
解决办法
1419
查看次数

Doctrine/symfony2类的对象无法转换为字符串

我在Symfony 2中的项目有问题我得到了这个错误

Catchable Fatal Error: Object of class Nicearma\MemesBundle\Entity\Usuario could not be converted to string in C:\wamp\www\24memes\vendor\doctrine-dbal\lib\Doctrine\DBAL\Statement.php line 131
Run Code Online (Sandbox Code Playgroud)

问题是,我试图做一个表格,从UsuarioInfo类,这个类有一个对象Usuario,表单工作正常,但去发送信息我得到消息而我没有找到解决方案,任何人都知道如何解决这个?我有这个文件

registro.html.twig

<div class="usuario">
{{ form_row(form.usuario) }}
</div>
{{ form_rest(form) }}
Run Code Online (Sandbox Code Playgroud)

Usuario.php

namespace Nicearma\MemesBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Nicearma\MemesBundle\Entity\Usuario
 *
 * @ORM\Table(name="usuario")
 * @ORM\Entity(repositoryClass="Nicearma\MemesBundle\Repository\Usuario")
 */
class Usuario implements UserInterface
{
    /**
     * @var integer $id
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string $nombre
     * @Assert\Type(type="String") …
Run Code Online (Sandbox Code Playgroud)

php doctrine symfony doctrine-orm

-1
推荐指数
1
解决办法
1万
查看次数

如何自动更新学说实体的属性?

我在我的symfony 2项目中创建了一个doctrine实体类,现在我想在实体管理器保存之前自动设置一个属性.是否有一些钩子要实现或如何解决我的问题?

symfony doctrine-orm

-1
推荐指数
1
解决办法
424
查看次数

用户实体提供程序中的Symfony2致命错误

我正在使用symfony 2.3.4,在安全配置中,我想根据此Cookbook指令从数据库加载安全用户.但我只得到这个错误:

致命错误:类MyApp\AdminBundle\Entity\Users包含3个抽象方法,因此必须声明为抽象方法或实现其余方法(Symfony\Component\Security\Core\User\UserInterface :: getRoles,Symfony\Component\Security\Core\/Volumes/Htdocs/symfony/src/MyApp/AdminBundle/Entity/Users.php中的User\UserInterface :: getUsername,Symfony\Component\Security\Core\User\UserInterface :: eraseCredentials)

php symfony doctrine-orm

-1
推荐指数
1
解决办法
2865
查看次数

"Doctrine\ORM\QueryBuilder"类型的预期参数

这是在函数"myList中" ProduitRepository:

    public function myList($id)
{


    $qb = $this->createQueryBuilder('p');

    $qb->where('p.id > 10');

    return $qb->getQuery()
               ->getResult();

}
Run Code Online (Sandbox Code Playgroud)

这是ProduitType.php中的builderForm:

    public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('nom', 'text',              array('required' => true))
        ->add('description', 'textarea',  array('required' => false))
        ->add('prix', 'money',            array('required' => true))
        ->add('publication', 'checkbox',  array('required' => false))
        ->add('image', new ImageType() )
        ->add('sousCategorie', 'entity',array(
        'class' => 'StoreCategorieBundle:SousCategorie',
        'property' => 'nom',
        'multiple' => false,
        'expanded' => false ))

        ->add('produit', 'entity', array(
        'class' => 'StoreProduitBundle:Produit',
        'property' => 'nom',
        'query_builder' => function(\Store\ProduitBundle\Entity\ProduitRepository $er) …
Run Code Online (Sandbox Code Playgroud)

php query-builder symfony doctrine-orm

-1
推荐指数
1
解决办法
3766
查看次数

如何在同一个Doctrine2对象上正确插入或更新

我有这段代码:

$entity = $em->getRepository('AppBundle:Representative')->find($soqlObj1['records'][0]['Id']);

if ($entity === null) {
    $entity = new Representative();
    $em->persist($entity);
}

// we set the values from veeva
$entity->setVeevaRepId($soqlObj1['records'][0]['Id']);
$entity->setEmail($soqlObj1['records'][0]['Email']);
...

$em->flush();
Run Code Online (Sandbox Code Playgroud)

这是实体的一部分Representative

class Representative
{
    /**
     * @ORM\Id()
     * @ORM\Column(type="string", length=45, nullable=false, unique=true)
     * @ORM\GeneratedValue()
     * @Expose()
     */
    protected $veeva_rep_id;

    /**
     * @var string
     * @ORM\Column(type="string", length=45)
     * @Expose()
     */
    protected $display_name;

    /**
     * @var string
     * @ORM\Column(type="string", length=255)
     * @Expose()
     */
    protected $avatar_url = 'https://pdone.s3.amazonaws.com/avatar/default_avatar.png';

    /**
     * @var string
     * @ORM\Column(type="string", length=45) …
Run Code Online (Sandbox Code Playgroud)

php symfony doctrine-orm symfony-2.6

-1
推荐指数
1
解决办法
8332
查看次数

如何懒惰地创建实体监听器并将依赖关系注入其中

在Doctrine 2.4之前,捕获生命周期事件(例如prePersist)的默认方式是为所有实体触发的全局事件侦听器.运行像Symfony服务这样的监听器可以很容易地注入其他服务(如requestrequest_stack对象).

现在,更好的解决方案似乎是一个实体监听器,因为它带来的开销更少!

那么让我们在实体标题中开始这个...:

* @ORM\EntityListeners({ "AppBundle\Entity\Listener\LanguageListener" })
Run Code Online (Sandbox Code Playgroud)

这是班级:

namespace AppBundle\Entity\Listener;

use Doctrine\ORM\Event\LifecycleEventArgs;

class LanguageListener
{
    public function prePersist($obj_entity, LifecycleEventArgs $obj_eventArgs)
    {    
        $request = ???;

        // set entity to users preferred language (for example 'de')
        $obj_entity->setLanguage($request->getLocale());
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我对如何访问Symfonys服务(在这种情况下是request对象)没有任何想法.

可是等等!有一种方法:

global $kernel;
if ('AppCache' == get_class($kernel))
{
    $kernel = $kernel->getKernel();
}
$request = $kernel->getContainer()->get('request');
Run Code Online (Sandbox Code Playgroud)

而且它也在发挥作用.

但在我的所有研究中,我发现很多相关的问题都严格警告了!唯一的区别:所有这些问题都是指实体,而不是实体听众 ......

......引导我到这两个问题:

  1. 以上解决方案是否可行?
  2. 如果没有:应该怎么做?

[编辑:]再次(见第一句)让我说清楚这个问题也是关于如何使用服务.服务需要一定的费用,请参阅昂贵的服务建设 …

php symfony entitylisteners doctrine-orm

-1
推荐指数
1
解决办法
2565
查看次数

原则ORM-从实体中删除属性?

我想做的事情很简单,但是我找不到解决方案。我已经开始使用与Doctrine捆绑在一起的Symfony4开发我的应用程序。最初,我设计了数据库模型,但是在开发过程中,我意识到原始解决方案对于我想做的事情是错误的方式。现在,我想从实体中删除一个属性。在普通的SQL中,我会ALTER TABLE table DROP COLUMN column然后使用新参数重新创建它。但是,该解决方案在Doctrine中给了我一个错误,因此我也更改了PHP模型。同样,另一个错误。好的,这看起来不像我想要的方式。除了在学说方面深入研究之外,我的问题是否有解决方案?最好的方法就是上面的SQL命令中所述的简单方法?

symfony doctrine-orm

-1
推荐指数
1
解决办法
3776
查看次数