首页 > 解决方案 > 关于 Laravel 中的数组声明

问题描述

干草,我有2个这样的数组

  foreach($kelas as $value)
    {
        $siswa[] = Siswa::whereIn('id', $data[$value->nama_kelas])
                        ->with(['ortuwali', 'wali', 'pribadi', 'penyakit'])
                        ->with('riwayat_pendidikan')
                        ->with(['ijazah' => function($q){
                        // $q->with(['nilaiujianakhir'])
                            // ->with(['mapelujian' => function($q){
                                // $q->select('mapelujian.nama_mapel','nilaiujianakhir.*')
                                $q->join('mapel', 'mapel.id', 'nilai_ujian.mapel_id')
                                // ->join('mapelujian','mapelujian.id','nilaiujianakhir.mapel_ujian_id');
                            // }])
                            ->get();
                        // $q->join('mapel', 'mapel.id', 'nilai_ujian.mapel_id')->get();
                        }])
                        ->with(['nilaiujianakhir' => function($q2){
                            $q2->join('mapel_ujian', 'mapel_ujian.id', 'nilai_ujianakhir.mapel_ujian_id')->get();
                        }])
                        ->with(['kelas' => function($q) {
                            $q->with(['ptk', 'sikap', 'prestasi'])
                              ->with(['pembelajaran' => function($q) {
                                $q->select('pembelajaran.*', 'mapel.id as mapelid', 'mapel.urut_rapor')
                                    ->join('mapel', 'mapel.id', '=', 'pembelajaran.mapel_id')
                                    ->with('nilai.kkm')
                                    ->orderByRaw('ISNULL(mapel.urut_rapor), CAST(mapel.urut_rapor AS DECIMAL) ASC');
                              }])
                              ->orderBy('semester_id');
                        }])
                        // ->with(['kelas.ptk','kelas.sikap', 'kelas.prestasi'])
                        // ->with([
                        //     'kelas.pembelajaran' => function ($q) {
                        //         $q->select('pembelajaran.*', 'mapel.id as mapelid','mapel.urut_rapor')
                        //           ->join('mapel', 'mapel.id', '=', 'pembelajaran.mapel_id')
                        //           ->with('nilai.kkm')
                        //           ->orderByRaw('ISNULL(mapel.urut_rapor), CAST(mapel.urut_rapor AS DECIMAL) ASC');
                        //     }
                        // ])
                        ->orderBy('nama')
                        ->get();
    }

  $siswa[] = Siswa::whereIn('id', $pindahan)
                    ->with(['ortuwali', 'wali', 'pribadi', 'penyakit', 'riwayat_pendidikan'])
                    ->with(['ijazah' => function($q){
                        // $q->with(['nilaiujianakhir'])
                            // ->with(['mapelujian' => function($q){
                                // $q->select('mapelujian.nama_mapel','nilaiujianakhir.*')
                                $q->join('mapel', 'mapel.id', 'nilai_ujian.mapel_id')
                                // ->join('mapelujian','mapelujian.id','nilaiujianakhir.mapel_ujian_id');
                            // }])
                            ->get();
                        // $q->join('mapel', 'mapel.id', 'nilai_ujian.mapel_id')->get();
                    }])
                    ->with(['nilaiujianakhir' => function($q2){
                        $q2->join('mapel_ujian', 'mapel_ujian.id', 'nilai_ujianakhir.mapel_ujian_id')->get();
                    }])
                    ->with(['kelas' => function($q) {
                        $q->with(['ptk', 'sikap', 'prestasi'])
                          ->with(['pembelajaran' => function($q) {
                            $q->select('pembelajaran.*', 'mapel.id as mapelid', 'mapel.urut_rapor')
                                ->join('mapel', 'mapel.id', '=', 'pembelajaran.mapel_id')
                                ->with('nilai.kkm')
                                ->orderByRaw('ISNULL(mapel.urut_rapor), CAST(mapel.urut_rapor AS DECIMAL) ASC');
                          }])
                          ->orderBy('semester_id');
                    }])
                    // ->with(['kelas.ptk','kelas.sikap', 'kelas.prestasi'])
                    // ->with([
                    //     'kelas.pembelajaran' => function ($q) {
                    //         $q->select('pembelajaran.*', 'mapel.id as mapelid','mapel.urut_rapor')
                    //         ->join('mapel', 'mapel.id', '=', 'pembelajaran.mapel_id')
                    //         ->with('nilai.kkm')
                    //         ->orderByRaw('ISNULL(mapel.urut_rapor), CAST(mapel.urut_rapor AS DECIMAL) ASC');
                    //     }
                    // ])
                    ->orderBy('nama')
                    ->get();

我将数组siswa与这个函数合并

$siswas     = new Collection;

    foreach($siswa as $value)
    {
        $siswas = $siswas->merge($value);
    }

在刀片中,我为每个关系调用这样的对象

 $siswa->pribadi->berat_badan_diterima
$siswa->pribadi->berat_badan_keluar
$siswa->pribadi->tinggi_badan_diterima

我在尝试获取非对象的属性 berat badan diterima 时遇到错误

我已经在刀片文件中更改了我的代码,如下格式:

 $siswa->pribadi['berat_badan_diterima']
$siswa->pribadi['berat_badan_keluar']
$siswa->pribadi['tinggi_badan_diterima']

并且代码有效,但它不是有效的,我必须更改刀片文件中的许多行和许多文件刀片以更改格式,我想从控制器更改代码此代码..

$siswas     = new Collection;

foreach($siswa as $value)
{
    $siswas = $siswas->merge($value);
}

如何更改上面的代码控制器,以便在尝试获取非对象的属性时不会发生错误?

谢谢

标签: phparrayslaravel

解决方案


推荐阅读