Как можно использовать один результат запроса в предложении where в laravel, как мы делаем в запросе sql, используя предложение where в выражении? - PullRequest
0 голосов
/ 27 апреля 2019

Я пишу запрос в Laravel, но он выдаёт мне ошибку.

ErrorException: объект класса stdClass не может быть преобразован в строку

$subject_ids = DB::table('question_sets')
                   ->select('subject_id')
                   ->where('test_section_id','=',$testDetail->test_section_id)
                   ->distinct()
                   ->get();

$topic_ids = DB::table('topics')
                 ->select('id')
                 ->where('subject_id','=',$subject_ids)
                 ->get();

1 Ответ

0 голосов
/ 27 апреля 2019

В запросе ниже

$subject_ids = DB::table('question_sets')
                   ->select('subject_id')
                   ->where('test_section_id','=',$testDetail->test_section_id)
                   ->distinct()->get();

Вы получаете коллекцию, если вы хотите определенное значение, вы можете использовать first() и тогда вы можете сделать

$subject_id = DB::table('question_sets')
                  ->select('subject_id')
                  ->where('test_section_id','=',$testDetail->test_section_id)
                  ->distinct()
                  ->pluck('name')
                  ->first();

и

$topic_ids = DB::table('topics')
                 ->select('id')
                 ->where('subject_id','=',$subject_id)
                 ->get();

или , если вы хотите сопоставить со всеми $ subject_ids, вы должны использовать toArray() и whereIn, как

$subject_ids = DB::table('question_sets')
                   ->select('subject_id')
                   ->where('test_section_id','=',$testDetail->test_section_id)
                   ->distinct()
                   ->pluck('subject_id')
                   ->toArray();

и

$topic_ids = DB::table('topics')
                 ->select('id')
                 ->whereIn('subject_id', $subject_ids)
                 ->get();
...