【问题标题】:How to union more than two tables in laravel?如何在 laravel 中合并两个以上的表?
【发布时间】:2021-07-04 23:17:18
【问题描述】:

我想在查询构建器 JSON 资源 Laravel 中合并表问题和选择。当我尝试这个时,我遇到了一个错误;我的代码有什么问题?

这是我的 CurriculumDisplayResource:

    <?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\DB;

class CurriculumDisplayResource extends JsonResource
{

    public function toArray($request)
    {

        $second = DB::table('questions')
            ->join('quizzes','quizzes.id','=','questions.quiz_id')
            ->select('questions.*')
            ->get();
        $third = DB::table('choices')
            ->join('questions','questions.id','=','choices.question_id')
            ->select('choices.*')
            ->get();


        return [

                    'id' => $this->id,
                    'title_section' => json_decode($this->title_section),
                    'learning_objective'=> json_decode($this->learning_objective),
                    'content_detail' =>

                        DB::table('curriculums')
                            ->join('content_texts','curriculums.id','=','content_texts.curriculum_id')
                            ->join('content_files','curriculums.id','=','content_files.curriculum_id')
                            ->join('content_videos','curriculums.id','=','content_videos.curriculum_id')

                            ->join('quizzes','curriculums.id','=','quizzes.curriculum_id')

                            ->select('content_texts.title_text','content_texts.text_course',
                                'content_files.title_file','content_files.file_course','content_videos.title_video',
                                'content_videos.video_course','quizzes.title_quiz','quizzes.')
                            ->union($second)
                            ->union($third)
                            ->get(),


                    'parent_id' => $this->id,
                ];
    }
}

这是错误:

【问题讨论】:

  • 我想正确的标题是“如何在 laravel 中合并两个以上的表?”请修复

标签: php laravel eloquent laravel-query-builder laravel-collection


【解决方案1】:

如果您想在union() 方法中使用-&gt;get(),则不应在查询末尾使用-&gt;get()

$second = DB::table('questions')
    ->join('quizzes','quizzes.id','=','questions.quiz_id')
    ->select('questions.*');

$third = DB::table('choices')
    ->join('questions','questions.id','=','choices.question_id')
    ->select('choices.*');

【讨论】:

    猜你喜欢
    • 2020-05-13
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多