我想知道如何使用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 }}
时,我什么都没看到。
答案 0 :(得分:0)
看起来没有必要回答这个问题,但是对于这里的情况,您正在尝试摘录字段中的内容,这意味着您只想从141
抓取body
个字符字段,虽然这可以工作,但你必须调整它,因为LEFT
函数将返回正好141
个字符,它可以在像{{1}这样的单词中间结束(最后一个字符) }这个词是hel...
而hello
字符是141th
所以它需要是一个完整的单词来显示摘录,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
一样结束。