Eloquent Builder实例报错title不存在,如何单取About表title列?
问题解决方法
首先明确报错原因:你写的About::orderBy('created_at', 'desc')只是生成了一个查询构造器对象,并没有实际执行数据库查询;就算加上get()执行查询,返回的也是包含多条数据的集合,集合本身没有title属性,直接访问自然报错。
下面给你两种不用foreach的解决方案,根据你的需求选择:
情况1:只想获取最新一条记录的title
可以用first()直接获取排序后的第一条数据,同时用select('title')只查询title列,减少数据库开销:
控制器代码:
// 只查title列,按创建时间倒序取第一条 $about = About::select('title')->orderBy('created_at', 'desc')->first(); return view('about')->with('about', $about);
视图中调用(用可选链式调用避免无数据时报错):
{{ $about?->title }}
情况2:需要获取所有记录的title,但不想用foreach循环
可以用pluck('title')直接提取所有title组成集合,再用implode拼接成字符串输出:
控制器代码:
// 提取所有title,按创建时间倒序排序 $aboutTitles = About::orderBy('created_at', 'desc')->pluck('title'); return view('about')->with('aboutTitles', $aboutTitles);
视图中直接输出拼接后的内容(这里用逗号分隔,你可以换成其他分隔符):
{{ $aboutTitles->implode(', ') }}
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

