【问题标题】:Laravel 4 using query builder for LEFT() mysql string functionLaravel 4 使用 LEFT() mysql 字符串函数的查询生成器
【发布时间】:2014-02-04 18:18:28
【问题描述】:

我想知道如何使用 Laravel 的查询构建器创建 LEFT() 字符串函数。这就是我的目标,也是为我返回正确结果的原因。

MySQL 版本

SELECT id, title, LEFT(body, 141) AS body FROM posts

尝试查询生成器

$posts = Post::select('title', 'id', DB::raw('left("body", 141)'))->orderBy('created_at')->get(3);

我没有发现任何错误,我可以使用{{ $post->title }},但是当我尝试使用{{ $post->body }} 时,我什么也看不到。

【问题讨论】:

  • 您没有在查询构建器中将左侧函数别名为 body。
  • 感谢@BrianGlaz 现在正在工作。

标签: php mysql laravel laravel-4 query-builder


【解决方案1】:

看起来没有必要回答这个问题,但关于这里的情况,您正在尝试从字段中提取类似内容的摘录,这意味着您只想从 body 字段中获取 141 字符,而这会起作用,但您必须对其进行调整,因为LEFT 函数将准确返回141 字符,并且它可能会在hel... 之类的单词中间结束(最后一个字符),其中单词是hello 和@ 987654327@ 字符是l 所以它需要是一个完整的单词来显示摘录和Laravel 有内置的解决方案,使用Str::words() 方法你可以指定要显示多少个完整的单词所以我想,你也可以使用它:

Str::words($post->body, 30); // show first 30 words from the $post->body

默认为:words($value, $words = 100, $end = '...')

Str::words($post->body)

这将首先输出任何文本中的完整单词100,然后以... 结尾,因此,例如,如果hello 是最后一个单词,那么它将以hello... 结尾。

【讨论】:

  • 谢谢@SheikhHerra 我不知道这个:)
猜你喜欢
  • 2013-06-28
  • 2014-12-15
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 2015-12-13
  • 2013-08-06
  • 1970-01-01
  • 2014-05-13
相关资源
最近更新 更多