Php Laravel 4使用query builder for LEFT()mysql字符串函数

Php Laravel 4使用query builder for LEFT()mysql字符串函数,php,mysql,laravel,laravel-4,query-builder,Php,Mysql,Laravel,Laravel 4,Query Builder,我想知道如何使用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); 我不回顾任何错误,我可以使用

我想知道如何使用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
字段中抓取
141
字符,虽然这可以工作,但您必须对其进行调整,因为
LEFT
函数将精确返回
141
字符,并且可能会结束(最后一个字符)在像“代码> HEL……/代码>中的一个词中,单词是<代码> hello < /代码>和<代码>第一百四十一< /代码>字符是“代码> L>代码”,因此它需要一个完整的单词来显示摘录和<代码> Laravel < /代码>为此有内置的解决方案,使用<代码> STR::单词())/代码>方法,您可以指定多少个完整的单词来显示,所以我想,您也可以使用此选项:

Str::words($post->body, 30); // show first 30 words from the $post->body
默认值为:
words($value,$words=100,$end='…)


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

结束。您在查询生成器中没有将左函数别名为
body
。感谢@briangraz现在工作。感谢@sheikherra我不知道这一点:)
Str::words($post->body)