You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel控制器从SQL表返回特定数据技术求助

解决SQL表多字段数据返回问题

嘿,看你的代码,问题出在question::lists('Answer1', 'id')这一行——这个方法(Laravel旧版本的lists,新版本对应pluck)只会取出id作为键、Answer1作为值的键值对集合,自然只能拿到同一列的数据啦。下面给你几个实用的解决方案,按需选择就行:

1. 获取指定多个字段的完整数据集

如果你需要拿到包含title、Answer1、Answer2这类多字段的完整问题数据,用select()指定字段再搭配get()即可:

public function view_Questionnaire(Questionnaire $Questionnaire) { 
    // 把需要的字段都列在select里,比如id, title, Answer1, Answer2
    $cats = question::select('id', 'title', 'Answer1', 'Answer2')->get();
    // 修正语法错误:是-> 而不是 -
    $Questionnaire->option_name = unserialize($Questionnaire->option_name); 
    return view('questionnaire.view', compact('Questionnaire', 'cats')); 
}

这样$cats就是包含所有指定字段的集合,在视图里你可以遍历每个question,用{{ $question->title }}、{{ $question->Answer1 }}这类方式调用不同字段。

2. 获取特定字段的键值对(类似lists的结构)

要是你还是需要键值对形式,但想关联其他字段,比如用id做键、title做值,或者把多个答案字段打包成值:

// 示例1:id为键,title为值
$cats = question::pluck('title', 'id');

// 示例2:id为键,同时包含Answer1和Answer2作为值数组
$cats = question::select('id', 'Answer1', 'Answer2')
    ->get()
    ->mapWithKeys(function ($item) {
        return [$item->id => [
            'answer1' => $item->Answer1,
            'answer2' => $item->Answer2
        ]];
    });

3. 额外提醒:关联当前问卷的问题

如果你的question表有questionnaire_id字段,需要只返回当前问卷对应的问题,记得加上where条件过滤:

$cats = question::where('questionnaire_id', $Questionnaire->id)
    ->select('id', 'title', 'Answer1', 'Answer2')
    ->get();

另外注意你代码里的小bug:$Questionnaire-option_name少了一个>,应该是$Questionnaire->option_name,不然序列化解析会报错哦。

内容的提问来源于stack exchange,提问作者J.Fair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:20:58