Laravel如何从MySQL JSON字段的options数据中获取option键值且不使用foreach
问题原因
你的options字段解析后的数组不是从0开始的连续索引数组,首个元素的键为1,所以用[0]下标访问自然会触发Undefined array key 0错误。
解决方案(无需foreach遍历)
前置配置
先确保你的Question模型已经配置了JSON字段自动转换,在模型的$casts属性中添加配置:
protected $casts = [ // 可选值为array(转数组)或collection(转Laravel集合) 'options' => 'array', ];
方法1:重置数组索引后访问
用array_values重置数组的键为从0开始的连续索引,直接取下标0即可:
{{ array_values($question->options)[0]['option'] }}
方法2:用Laravel集合取首个元素
如果已经将options cast为集合,或者手动转集合调用first()方法拿第一个元素:
{{ collect($question->options)->first()['option'] }} // 已经cast为collection的写法更简洁 {{ $question->options->first()['option'] }}
内容的提问来源于stack exchange,提问作者Brian Mutiso
相关产品推荐
相关产品推荐

