Tag: 查询生成器

如何使用symfony2原则查询生成器来select不同的查询?

我有这个symfony代码,其中检索与我的项目上的博客部分相关的所有类别: $category = $catrep->createQueryBuilder('cc') ->Where('cc.contenttype = :type') ->setParameter('type', 'blogarticle') ->getQuery(); $categories = $category->getResult(); 这工作,但查询包括重复: Test Content Business Test Content 我想在我的查询中使用DISTINCT命令。 我见过的唯一示例要求我写入原始SQL。 我想尽可能避免这种情况,因为我试图保持所有的代码都一样,所以他们都使用Symfony2 / Doctrine提供的QueryBuilder特性。 我尝试添加distinct()到我的查询是这样的: $category = $catrep->createQueryBuilder('cc') ->Where('cc.contenttype = :type') ->setParameter('type', 'blogarticle') ->distinct('cc.categoryid') ->getQuery(); $categories = $category->getResult(); 但是会导致以下错误: 致命错误:调用未定义的方法Doctrine \ ORM \ QueryBuilder :: distinct() 我如何告诉symfonyselect不同的?

如何安全地使用保留的SQL名称?

我使用CakePHP 3使用sqlserver作为数据源服务器。 我相信有没有问题,我的数据库连接..作为home.ctp提示我连接到我的数据库..我也使用迁移插件来创build我的表..似乎有没有问题的工作这些工具。 但是在我烘烤了我的MVC之后,我只有页面充满了错误。 例如$ bin \ cake烘烤所有的testing 我发现没有错误,MVC是在它的特定文件夹,testController.php,testTable等 并在浏览器localhost:8765 \ tests 但我得到的是不同的错误页面。我看到 Error: SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near the keyword 'desc'. SELECT * FROM (SELECT Tests.id AS [Tests__id], Tests.desc AS [Tests__desc], (ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) AS [_cake_page_rownum_] FROM tests Tests) _cake_paging_ WHERE _cake_paging_._cake_page_rownum_ <= :c0 在左边更多的错误。 我认为这是因为控制器错误的查询或查询生成的查询是仅用于mysql。 我只是想知道如何处理这个。 […]

如何限制每个logging/组包含的关联?

我有一个模型,文章,其中有许多摘要。 我想载入最新的10篇文章,并且对于每篇文章,最多的点数都是摘要。 我的function如下所示: public function getArticles($category, $viewName) { $subArticles = $this->Articles->findByCategory($category)->contain([ 'Abstracts' => function ($q) { return $q ->select(['body', 'points', 'article_id']) ->where(['Abstracts.approved' => true]) ->limit(10) ->order(['Abstracts.points' => 'DESC']); } ]) ->limit(10) ->order(['Articles.created' => 'DESC']) ; $this->set( $viewName . 'Articles', $subArticles ); } 我得到的结果不是我想要的。 通过SQL查看,首先CakePHP获取类别(罚款)中的所有items.id。 然后,CakePHP使用刚刚发现的10个articles.id文件进入摘要表,并要求获得最高票数的10个摘要(属于这些文章)。 问题是,我想要1篇摘要,而不是属于该类别的任何文章的10摘要。 我该如何解决这个问题? 谢谢! 编辑 ndmbuild议这是在包含模型上使用limit()的重复,所以我试图在那里的解决scheme。 也就是说,我把这个添加到我的模型中: $this->hasOne('TopAbstract', [ 'className' => […]

如何使用Laravel Query Builder从子查询中进行select?

我想通过使用Eloquent ORM的以下SQL来获得价值。 – SQL SELECT COUNT(*) FROM (SELECT * FROM abc GROUP BY col1) AS a; 然后我考虑以下。 – 代码 $sql = Abc::from('abc AS a')->groupBy('col1')->toSql(); $num = Abc::from(\DB::raw($sql))->count(); print $num; 我正在寻找更好的解决scheme。 请告诉我最简单的解决scheme。