如何使用Laravel Eloquent将单行数据传递到视图并提取字段值
解决Laravel获取单行单列数据只显示值的问题
你当前用get()方法返回的是Eloquent集合(哪怕只有一条数据),所以echo时会输出集合的JSON格式,导致出现[{"contents":"Example Company Ltd"}]。以下几种方法可以直接拿到你需要的字符串值:
方法1:用value()直接获取字段值(最简洁)
直接用value()方法,它会返回匹配到的第一条数据的指定字段值:
// 控制器代码 $companyName = Homepage::where('section', 'Company Name')->value('contents');
在视图里直接输出即可:
echo $companyName;
方法2:用first()获取单条模型实例后取属性
先用first()获取匹配的第一条模型数据,再直接访问对应的属性:
// 控制器代码 $companyName = Homepage::select('contents')->where('section', 'Company Name')->first();
视图里输出属性值:
echo $companyName->contents;
注意:如果数据库中没有匹配的数据,
first()会返回null,这时直接访问->contents会报错,可以加上判断:echo $companyName?->contents;(PHP 8+支持)或者echo isset($companyName) ? $companyName->contents : '';
方法3:用pluck()结合first()取值
pluck()会提取指定字段组成集合,再用first()取集合的第一个元素:
// 控制器代码 $companyName = Homepage::where('section', 'Company Name')->pluck('contents')->first();
视图里直接输出即可:
echo $companyName;
你之前尝试的$companyName->get('contents')没用,是因为get()返回的集合调用get()方法还是返回集合,没法直接拿到单个值。
内容的提问来源于stack exchange,提问作者Mercutheo
相关产品推荐
相关产品推荐

