簡體   English   中英

Laravel 5:使用with進行數據庫關系查詢

[英]Laravel 5 : database relation query using with

用戶->有很多問題問題->有很多答案

我想顯示一個用戶的問題信息,以及每個問題的最新答案

$questions = Question::select('id','user_id',
            'title','video','status','created_at')
            ->where('user_id','=',$user->id)
            ->where('status','>=','2')
            ->with([
                'user' => function($query){
                    $query->select('id','name','picture');
                },
                'answers' => function($query){
                    $query->select('id','question_id','user_id','answer','created_at',DB::raw('count(*) as answer_count'))
                    ->orderBy('created_at','desc')->first();

                },
            ])->get();

在這里我沒有得到每個問題的答案。 我得到了用戶提交的所有問題的答案

你能幫我嗎? 如何將問題ID放在哪里

預期產量:

User [id, name, and so on ] -> 
question [
    ['id', 'title' ..]->Answer['id','question_id',etc ],
    ['id', 'title' ..]->Answer['id','question_id',etc ]
]

在此處輸入圖片說明 在此處輸入圖片說明 在此處輸入圖片說明

您首先需要獲取用戶的問題及其答案,而不是問題本身,以獲取預期的輸出:

$user = User::select('id','name','picture')->with([
            'questions' => function($query){
                $query->select('id','user_id','title','video','status','created_at');
                $query->where('status','>=','2');
            },
            'questions.answers' => function($query){
                $query->select('id','question_id','user_id','answer','created_at',DB::raw('count(*) as answer_count'));
                $query->orderBy('created_at','desc')->first();

            },
        ])->findOrFail($user_id);

現在,您應該能夠通過以下方式獲得給定用戶提出的所有問題以及對他們的最新答案:

foreach($user->questions as $question) {
  $answer = $question->answers;
}
$questions = Question::select('id','user_id','title','video','status','created_at')->with([
            'user' => function($query){
                $query->select('id','name','picture');
            }
        ])->where('status','>=','2')->get();

        foreach($questions as $question)
        {
            $question_data[] = [
                'id' => $question->id,
                'title' => $question->title,
                'video' => $question->video,
                'user_id' => $question->user_id,
                'status' => $question->status,
                'created_at' => $question->created_at->toDateTimeString(),
                'thumbnail' => $question->thumbnail,
                'user' => [
                    'id' => $question->user->id,
                    'name' => $question->user->name,
                    'picture' => $question->user->picture
                ],
                'answers' => 
                $question->answers()->select('video','question_id','user_id','created_at','thumbnail')
                ->with([
                    'user' => function($query){
                        $query->select('id','name','picture');
                    }
                ])->orderBy('created_at','desc')->first()];
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM