Получение записей из второй таблицы с первой таблицей в виде массива, используя только запрос MySQL - PullRequest
1 голос
/ 24 октября 2019

Я хочу получить запись из STUDENT TABLE на основе CLASS TABLE. Например,

RESULT = ['CLASS1'=>['STUDENT1','STUDENT3','STUDENT3'],'CLASS2'=> ['STUDENT1','STUDENT3','STUDENT3']]

То, что я делаю, это выборка всех классов и цикл In для на основе Id, поиск записей в STUDENT table. и сохранение в массив.

$class =  ClassList::where(CLASS_LIST.'.class_id',$student->school_id)->where(CLASS_LIST.'.status','Active')->where(function($query)use($request){
if($request->has('class_id') && !empty($request->class_id)){
                        $query->where(CLASS_LIST.'.id',$request->class_id);
                    }
            })->leftjoin(student_TABLE,student_TABLE.'.user_id',CLASS_LIST.'.created_by_user')->select(CLASS_LIST.'.id',CLASS_LIST.'.name',CLASS_LIST.'.status',CLASS_LIST.'.updated_at as class_members',student_TABLE.'.first_name',student_TABLE.'.last_name',CLASS_LIST.'.created_at')->get();
            foreach($classs as $key=>$class){
                $class_member = classs::where('class_id',$class->id)->where(class_TABLE.'.status','Active')
                    ->join(student_TABLE,student_TABLE.'.student_id',class_TABLE.'.student_id')
                    ->get();
                $class->class_members = $class_member;
            }

ОТВЕТ: ВСЕ КЛАССЫ:

array:4 [
  0 => array:7 [
    "id" => 4
    "name" => "CLASS 1"
    "students"=> array:5 [
      "first_name" => "kaushik"
      "last_name" => "thakkar"
      "user_id" => 9    
      "class_name" => "CLASS 1"
     ]
  ]
  1 => array:7 [
    "id" => 5
    "name" => "CLASS 2"
    "students"=> array:5 [
      "first_name" => "kaushik"
      "last_name" => "thakkar"
      "user_id" => 9    
      "class_name" => "CLASS 1"
     ]
  ]
]

1 Ответ

0 голосов
/ 24 октября 2019

Вы можете решить это двумя foreach, как это

$classes = ClassList::all();
$students = Student::all();


    $arr = array();

    foreach ($classes as $key => $val) {
        $id = $val->id;
        $arr[$id]['data'] = $val;
    }

    foreach ($students as $key => $val) {
        $parent = $val['class_id'];
        if (isset($arr[$parent])) {
            $arr[$parent]['children'][] = $val;
        }
    }
return $arr;

Это дает результаты, такие как Parents -> Childes.

прочитайте этот вопрос это может помочь вам понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...