标签: query-builder

查询构建器未插入时间戳

我正在使用"查询"构建器插入数据所有字段都已插入,但是时间戳如created_at和updated_at未插入它们都具有默认的0:0:0值我的插入查询是

$id = DB::table('widgets')
            ->insertGetId(array(
                'creator' => Auth::user()->id,
                'widget_name' => $request->input('widget_name'),
                'pages' => json_encode($request->input('pages')),
                'domain' => $request->input('domain'),
                "settings" => $settings,
            ));
Run Code Online (Sandbox Code Playgroud)

php mysql query-builder laravel

22
推荐指数
2
解决办法
2万
查看次数

TypeORM 中 .limit() 和 .take() 之间的区别

我对具有相似目的的不同 TypeORM 方法感到困惑。来自 TypeORM 文档:

\n
    \n
  • .take()\xe2\x80\x94 分页限制。设置要获取的最大实体数。
  • \n
  • .skip()\xe2\x80\x94 分页偏移量。设置要跳过的实体数量。
  • \n
\n

我不太理解“分页限制/偏移”的含义。但是,不幸的是,我找不到任何有关区分的信息,例如.take().limit()信息。我决定在 TypeORM 的源代码中查看这些方法的描述:

\n
    \n
  • .limit()\xe2\x80\x94 设置 LIMIT - 要选择的最大行数。请注意,如果您使用联接,它可能不会按您预期的方式工作。如果您想实现分页,并且您的查询中有 join,那么请使用 take 方法。
  • \n
  • .offset()\xe2\x80\x94 设置的 OFFSET - 选择偏移。请注意,如果您使用联接,它可能不会按您预期的方式工作。如果您想实现分页,并且您的查询中有 join,那么请使用skip 方法。
  • \n
\n

为什么这两种方法不能用于分页呢?那么他们的目的是什么?请问谁能给我提供使用这 4 种方法的清晰示例吗?提前致谢。

\n

query-builder node.js typeorm

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

使用EXISTS查询Doctrine Symfony2

如何使用查询生成器实现以下查询?

SELECT * 
FROM t 
WHERE t.status = 1
    OR EXISTS(SELECT * 
              FROM r 
              WHERE r.t_id = t.id 
                  AND r.status = 1
             )
Run Code Online (Sandbox Code Playgroud)

没有检查的部分很容易,但有没有办法实现EXISTS

doctrine query-builder symfony

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

Symfony2 Doctrine querybuilder其中IN

我失去了trilion时间谷歌,但没有一个解决方案是好的.

我有这个查询构建器:

        $qb2=$this->createQueryBuilder('s')
        ->addSelect('u')
        ->innerJoin('s.user','u')
        ->where("u.id IN(:followeeIds)")
        ->andWhere('s.admin_status = false')
        ->setParameter('user', $user)
        ->setParameter('followeeIds', $arrayFolloweeIds)
        ->orderBy('s.id','DESC')
        ->setMaxResults(15)
    ;
Run Code Online (Sandbox Code Playgroud)

我可以做第二个查询然后做,$qb->getDQL()但我会缓存查询?

错误:

Invalid parameter number: number of bound variables does not match number of tokens
Run Code Online (Sandbox Code Playgroud)

doctrine dql query-builder

20
推荐指数
2
解决办法
5万
查看次数

doctrine 2查询构建器和连接表

我想在我的主页上为每个帖子收到所有评论

return 
$this->createQueryBuilder('c')
->select('c')
->from('Sdz\BlogBundle\Entity\Commentaire' ,'c')                
->leftJoin('a.comments' ,'c')->getQuery()->getResult() ;
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误

[Semantical Error] line 0, col 58 near '.comments c,': Error:
Identification Variable a used in join path expression but was not defined before.
Run Code Online (Sandbox Code Playgroud)

PS:映射是正确的,因为我可以看到页面文章及其注释.

left-join query-builder doctrine-orm

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

使用QueryBuilder的多个WHERE

使用以下内容时,只有最后一个where添加到我的查询中;

$qb = $this->getEntityManager()->createQueryBuilder();

$qb->select(array('qi'))
    ->from('Table:Qi', 'qi')
    ->where("qi.content = " . $content->getId())
    ->where("qi.queue = " . $child->getQueue()->getId());
Run Code Online (Sandbox Code Playgroud)

我必须这样做才能注意到这两点

$qb->select(array('qi'))
    ->from('Table:Qi', 'qi')
    ->where("qi.content = " . $content->getId() . 
                 " AND qi.queue = " . $child->getQueue()->getId());
Run Code Online (Sandbox Code Playgroud)

这似乎不对?如何在多次where通话时使用第一种方法?

query-builder symfony doctrine-orm

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

如何在Doctrine 2中按计数排序?

我正在尝试按字段(年份)对我的实体进行分组并对其进行计数.

码:

public function countYear()
{
    $qb = $this->getEntityManager()->createQueryBuilder();
    $qb->select('b.year, COUNT(b.id)')
        ->from('\My\Entity\Album', 'b')
        ->where('b.year IS NOT NULL')
        ->addOrderBy('sclr1', 'DESC')
        ->addGroupBy('b.year');
    $query = $qb->getQuery();
    die($query->getSQL());
    $result = $query->execute();
    //die(print_r($result));
    return $result;
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法说,COUNT(b.id) AS count因为它给出了一个错误,我不知道该用什么作为addOrderby(???, 'DESC')值?

sql-order-by query-builder doctrine-orm

15
推荐指数
2
解决办法
2万
查看次数

为什么laravel模型会复制数据集以及如何(如果可能)只有一组数据?

laravel模型提供了一种方法,它可以返回来自另一个关联表的结果.

例如,我有一个名为item的表和另一个名为feedback的表,其中反馈表存储项表中项的反馈.因此,为了得到id为1的项目的所有反馈,我将做:

Item::find(1)->feedback;
Run Code Online (Sandbox Code Playgroud)

以下是返回对象的打印输出.

Illuminate\Database\Eloquent\Collection Object
(    [items:protected] => Array
       (
           [0] => Feedback Object
               (
                   [table:protected] => feedback
                   [connection:protected] => 
                   [primaryKey:protected] => id
                   [perPage:protected] => 15
                   [incrementing] => 1
                   [timestamps] => 1
                   [attributes:protected] => Array
                       (
                           [id] => 1
                           [rma_id] => 3
                           [item_id] => 8
                           [quo_id] => 0
                           [case_id] => i2eM20160120
                           [line_no] => 000001
                           [content] => test
                           [status] => sent
                           [read] => 0
                           [sender] => Tester
                           [created_at] => 2016-01-20 18:03:44
                           [updated_at] => 2016-01-20 18:03:44
                       )

                   [original:protected] => Array
                       ( …
Run Code Online (Sandbox Code Playgroud)

php model object query-builder laravel

15
推荐指数
1
解决办法
1490
查看次数

在Symfony2/Doctrine SQL中使用JOIN

我在尝试使用QueryBuilder或DQL时遇到问题.

我有以下关系:

用户<-1:n-> Profile <-n:m-> RouteGroup <-1:n-> Route

我想创建一个DQL,列出特定用户有权访问的所有路由.我可以使用以下代码获取此信息:

$usr = $this->container->get('security.context')->getToken()->getUser();
foreach ($usr->getProfiles() as $profile){
    foreach ($profile->getRoutegroups() as $routegroup){
        var_dump($routegroup->getRoutes()->toArray());
     }
}
Run Code Online (Sandbox Code Playgroud)

由于显而易见的原因,我无法使用此代码,否则我将重载我的服务器,大声笑.

我尝试了以下方法:

DQL:

$em->createQuery('SELECT p FROM CRMCoreBundle:User u
                  JOIN CRMCoreBundle:Profile p
                  JOIN CRMCoreBundle:RoleGroup rg
                  JOIN CRMCoreBundle:Role r
                  WHERE
                    u.id=:user')
        ->setParameter('user', $user->getId())
        ->getResult();
Run Code Online (Sandbox Code Playgroud)

QueryBuilder(我尝试使用u.profiles - 关系的名称而不是实体 - 但这也不起作用):

$em->createQueryBuilder()
        ->select('r')
        ->from('CRMCoreBundle:User', 'u')
        ->innerJoin('u.profiles','p')
        ->where('u.id = :user_id')
        ->setParameter('user_id', $user->getId())
        ->getQuery()
        ->getResult();
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗???

更新:我尝试了Zeljko的解决方案并制作了这个脚本:

    return $this->getEntityManager()
        ->createQueryBuilder()
        ->select('u, r')
        ->from('CRMCoreBundle:User', 'u')
        ->innerJoin('u.profiles','p')
        ->innerJoin('p.routegroups','rg')
        ->innerJoin('rg.routes','r')
        ->where('u.id = :user_id')->setParameter('user_id', $user->getId())
        ->getQuery()
        ->getResult(); …
Run Code Online (Sandbox Code Playgroud)

php doctrine dql query-builder symfony

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

Symfony表单query_buider和实体存储库

我正在尝试创建一个包含收集类型数据的表单,具体取决于所记录的用户.我正在关注Symfony食谱的这一章.

query_builder选项是一个闭包,我从DQL获取数据时,一切正常.由于需要从代码中的不同位置获取数据,我更愿意在Repository类中定义查询.

这是我的存储库中的函数:

public function findOwnedBy($user) {
    $query = $this->getEntityManager()->createQuery("SELECT l FROM MyBundle:Article a JOIN a.owndBy u WHERE u.id = :userId");
    $query->setParameters(array("userId"=>$user->getId()));
    return $query->getResult();
}
Run Code Online (Sandbox Code Playgroud)

在Controller中调用并返回Article数组时,此函数有效.这是symfony doc的片段:

$formOptions = array(
                    'class' => 'Acme\DemoBundle\Entity\User',
                    'multiple' => false,
                    'expanded' => false,
                    'property' => 'fullName',
                    'query_builder' => function(EntityRepository $er) use ($user) {
                        // build a custom query, or call a method on your repository (even better!)
                    },
                );
Run Code Online (Sandbox Code Playgroud)

当我在query_builder中调用我的Repository函数时,我收到一个错误:Expected argument of type "Doctrine\ORM\QueryBuilder", "array" given我可以理解,因为我的Repository返回一个Entity数组,而不是QueryBuilder.

我不想在表单中复制代码并创建新的QueryBuilder.从存储库中使用查询的最佳做法是什么?我想在存储库中有两个函数,一个返回一个数组,另一个返回QueryBuilder,但是Symfony doc中的注释" …

dql query-builder symfony-forms symfony

14
推荐指数
2
解决办法
3万
查看次数