在学说中如何使用左子句?

时间:2018-11-02 08:05:15

标签: php symfony doctrine

这是我的查询,用于查找表中的所有记录并从最早的记录开始排序。我想将一列限制为仅50个字符。我找不到任何信息来更改此查询以使用left子句。

    $posts = $ChocoPosts->findBy(array(), array('id' => 'DESC'));

此外,我尝试为此使用干净的sql语法,但未显示任何记录。

 $conn = $this->getDoctrine()->getManager()->getConnection();
$sql = '
    SELECT id, title, left(content, 45), date_add, img
    FROM choco_posts
    ORDER BY id DESC
    ';
$stmt = $conn->prepare($sql);
$stmt->execute();

$stmt->fetchAll();

我正在使用symfony4 ant树枝模板。我将所有记录显示在树枝中以进行循环。

2 个答案:

答案 0 :(得分:0)

您可以简单地使用SUBSTRING语句,例如:

$sql = '
    SELECT id, title, SUBSTRING(content, 1, 45), date_add, img
    FROM choco_posts
    ORDER BY id DESC
    ';

它们自身之间几乎没有什么区别,但是left可以潜在地利用索引,而substring则不能。

希望获得帮助

答案 1 :(得分:0)

您可以:

  1. 使用树枝切片过滤器-https://twig.symfony.com/doc/2.x/filters/slice.html
  2. 地图结果-http://php.net/manual/en/function.array-map.php
  3. 或者如果要使用对象创建带有子字符串的metohd