标签: doctrine-query

Doctrine - 如何打印出真正的sql,而不仅仅是准备好的语句?

我们正在使用Doctrine,一个PHP ORM.我正在创建一个这样的查询:

$q = Doctrine_Query::create()->select('id')->from('MyTable');
Run Code Online (Sandbox Code Playgroud)

然后在函数中我添加各种where子句和适当的东西,就像这样

$q->where('normalisedname = ? OR name = ?', array($string, $originalString));
Run Code Online (Sandbox Code Playgroud)

稍后,在execute()查询该查询对象之前,我想打印出原始SQL以便检查它,并执行以下操作:

$q->getSQLQuery();
Run Code Online (Sandbox Code Playgroud)

但是,它只打印出准备好的语句,而不是完整的查询.我想看看它发送给MySQL的是什么,而是打印出一个准备好的声明,包括?'s.有没有办法看到'完整'的查询?

php mysql orm doctrine doctrine-query

153
推荐指数
13
解决办法
24万
查看次数

'不在'查询中使用doctrine查询构建器

我试图重现这个查询:

SELECT * FROM `request_lines`
where request_id not in(
select requestLine_id from `asset_request_lines` where asset_id = 1 
)
Run Code Online (Sandbox Code Playgroud)

在doctrine查询构建器中,我被困在where_id不在的位置(选择

我目前有:

$linked = $em->createQueryBuilder()
        ->select('rl')
        ->from('MineMyBundle:MineRequestLine', 'rl')
        ->where()
        ->getQuery()
        ->getResult();
Run Code Online (Sandbox Code Playgroud)

doctrine doctrine-query symfony doctrine-orm

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

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

原则:如果不选择至少一个根实体别名,则无法通过标识变量选择实体

我在查询构建器中使用以下代码,以选择平均得分值,以及该平均值所属的类别实体:

$queryBuilder = $this->createQueryBuilder('s')
    ->resetDQLPart('select')
    ->select('AVG(s.score) as score, partial c.{reviewCategoryID} as cat')
    ->setParameter('status', ReviewStatusType::ACCEPTED)
    ->join('s.review', 'r')
    ->join('s.category', 'c')
    ->where('r.campsite = :campsite')
    ->andWhere('r.status = :status')
    ->setParameter('campsite', $campsite)
    ->groupBy('c.reviewCategoryID');
Run Code Online (Sandbox Code Playgroud)

$campsite 是评论所属的实体,而评分属于评论,评分具有类别.

但是当我尝试执行此操作时,我收到错误

Error: Cannot select entity through identification variables without choosing at least one root entity alias.
Run Code Online (Sandbox Code Playgroud)

当我调试并检查根别名时,我看到's'已定义,应该是根实体(Score).

知道什么可能是错的吗?

doctrine doctrine-query doctrine-orm

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

如何在Doctrine 2中获取类而不是数组

我可以使用这种结构从数据库中获取我的数据:

$user = $this->getDoctrine()
->getRepository('AcmeDemoBundle:Emails')
->find(8081);
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我能够得到这样的数据:

$user->getColumnNameHere();
Run Code Online (Sandbox Code Playgroud)

基本上我可以使用实体类.

但是,如果我想使用QueryBuilder而不是find我只获得关联数组.

$product->createQueryBuilder('p')
        ->setMaxResults(1)
        ->where('p.idx = :idx')
        ->select('p.columnNameHere')
        ->setParameter('idx', 8081)
        ->orderBy('p.idx', 'DESC')
        ->getQuery();
        $product = $query->getResult();
Run Code Online (Sandbox Code Playgroud)

$ product返回数组.是否可以使用实体Managaer类获取它?如果有,怎么样?

我挖掘文档,但似乎不可能或不存在于文档或我只是盲目:)

php doctrine doctrine-query doctrine-orm

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

使用Doctrine 2查询构建器的正则表达式?

根据标题,如何使用Doctrine 2查询构建器匹配正则表达式?基本上我正试图产生独特的slu ..

这是我目前的实施.我生成了slu .. 然后我检查是否有像这个slug一样使用的slu .. 如果有,我会将一个 - {number}附加到slug的末尾,其中{number}是尚未使用的最低数字.

$qb->select(array('partial o.{id, slug}'))
   ->from('Foo\Bar\Entity\Object', 'o')
   ->where($qb->expr()->like('o.slug', ':slug'));

$slug = new SlugNormalizer($text);
$qb->setParameter('slug', $slug->__toString().'-%');
Run Code Online (Sandbox Code Playgroud)

这里的问题是LIKE slug%可以匹配foo-bar-1,foo-bar-2和AND foo-bar-not-the-same-slug.更清洁的是寻找REGEX slug的正则表达式 - (\ d +)或类似的东西.

使用Doctrine 2查询构建器的任何方法吗?

regex doctrine-query doctrine-orm

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

Doctrine 2 PlainValue预计

我在执行Doctrine DQL查询时遇到问题.这是它给我的错误.

Doctrine\Common\Annotations\AnnotationException: [Syntax Error] Expected PlainValue, 
got 'integer' at position 13 in property Base\Session::$lifetime.
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

$query = $em->createQuery("SELECT s FROM Base\Session s WHERE s.session = \"$id\"");
Run Code Online (Sandbox Code Playgroud)

其中$ id是当前的session_id.我的模型看起来像:

namespace Base;

/** @Entity @Table(name="session") */
class Session extends Skeleton {
/**
 * @Id @Column(type="integer")
 * @GeneratedValue(strategy="AUTO")
 */
protected $id;

/** @Column(length=32) */
protected $session;

/** @Column(type=integer) */
protected $lifetime;

/** @Column(type=integer) */
protected $modified;

/** @Column(type="text") */ 
protected $data;
}
Run Code Online (Sandbox Code Playgroud)

php doctrine doctrine-query

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

如何查看查询中的参数?

为了调试我的代码,我希望看到执行的显式sql查询.

我使用创建查询createQueryBuilder,并且我实现的最明确的事情是使用以下原始查询:

$qb->getQuery()->getSQL();
Run Code Online (Sandbox Code Playgroud)

问题是,而不是参数,我看到持有人(?).我在网上找到了一些解决方案,但是它们分别用于1.3和1.4,没有用于Symfony-2.

想法?谢谢!

mysql doctrine-query symfony doctrine-orm

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

带有别名的SUM()字段上的Doctrine order

我试图在学说中做一个简单的查询但是很挣扎.

$query->select(array(
    'app_title' => 'u.title',
    'user_name' => 'u.user_name',
    'first_used' => 'MIN(u.creation_time)',
    'last_used' => 'MAX(u.stop_time)',
    'total_usage' => 'SUM(u.stream_seconds)',
))
->from(self::USAGE_TABLE, 'u')
->orderBy('total_usage', 'DESC');
Run Code Online (Sandbox Code Playgroud)

显然我得到一个关于列名不知道的错误,因为Doctrine正在使用它自己的别名(sclr4).

但是,如果我尝试按实际价值排序; SUM(u.stream_seconds),然后我在order by子句中得到一个意外的括号,我很确定SQL不支持这个.

所以,我只是试图将数据放在一个表中并处理列的排序.这看起来很简单,我该怎么做?有任何想法吗?

php doctrine doctrine-query doctrine-orm

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

Doctrine查询使用LIMIT查找MySQL中的Result总数

我正在尝试获取应用LIMIT时为特定查询找到的总行数.我在PHP/MySQL中成功找到了答案,但我无法在Zend/Doctrine中转换逻辑.我正在使用Doctrine 2.3/Zend 1.12.

我不想使用两个不同的查询来查找结果:

PHP代码:

<?php
$con = mysql_connect('localhost', 'root', '');
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("myproject", $con);

$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM `user` WHERE `user_country`='us' LIMIT 10";
$result = mysql_query($sql);
$sql = "SELECT FOUND_ROWS() AS `found_rows`;";
$rows = mysql_query($sql);
$rows = mysql_fetch_assoc($rows);
$total_rows = $rows['found_rows'];
echo $total_rows;
?>
Run Code Online (Sandbox Code Playgroud)

我也在MySQL查询中尝试了以下内容:

试试Union:

    SELECT COUNT( * ) FROM  `user` WHERE  `user_country` =  'US' 
UNION SELECT `user_id` FROM `user` WHERE `user_country` = 'US' LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

尝试选择:

    SELECT …
Run Code Online (Sandbox Code Playgroud)

mysql sql doctrine doctrine-query doctrine-orm

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

标签 统计

doctrine-query ×10

doctrine ×8

doctrine-orm ×8

mysql ×4

php ×4

symfony ×2

orm ×1

regex ×1

sql ×1