【问题标题】:ErrorException (E_NOTICE) Trying to get property 'sentimen' of non-object [duplicate]ErrorException(E_NOTICE)试图获取非对象的属性“sentimen”[重复]
【发布时间】:2019-12-17 07:03:23
【问题描述】:

求助,我收到错误信息 ErrorException (E_NOTICE) Trying to get property 'sentimen' of non-object

    public function prediksi()
        {
            $collection = array();
            $title = "Data Prediksi Sentimen";
            $testing_data = DataTesting::count();
            $klasifikasi = DataTesting::with(['data_crawling','klasifikasi'])->get();
            foreach($klasifikasi as $class){
                $prediksi = Klasifikasi::with(['sentimen'])->where('id_testing',$class->id_testing)->first();
                $hasil = Hasil::where('id_testing',$class->id_testing)->get();
                $aktual = Sentimen::where('id_sentimen', $class->data_crawling->id_sentimen)->first();
                $collection[] = [
                    'id_testing' => $class->id_testing,
                    'username' => $class->data_crawling->username,
                    'tweet' => $class->data_crawling->tweet,
                    'kategori' => $aktual->kategori,
                    'prediksi' => $prediksi->sentimen->kategori,
                ];
            }

            return view('visualisasi.prediksi', compact(['title','collection','testing_data','hasil']));
        }

View Code

【问题讨论】:

  • 这能回答你的问题吗? Reference - What does this error mean in PHP?
  • 你有表中的数据吗?? - sentimen
  • 我猜这个错误是因为这个-$prediksi->sentimen->kategori。您确定您为“prediksi”模型设置的关键“sentimen”关系不为空吗?
  • 你应该尝试这样做 $prediksi->sentimen->first()->kategori
  • @AksenP 我没有找到答案

标签: php laravel


【解决方案1】:

想一想你的查询和关系是否正确,然后像下面这样使用 IF() 条件

public function prediksi()
    {
        $collection = array();
        $title = "Data Prediksi Sentimen";
        $testing_data = DataTesting::count();
        $klasifikasi = DataTesting::with(['data_crawling','klasifikasi'])->get();
        foreach($klasifikasi as $class){
            $prediksi = Klasifikasi::with(['sentimen'])->where('id_testing',$class->id_testing)->first();
            $hasil = Hasil::where('id_testing',$class->id_testing)->get();
            $aktual = Sentimen::where('id_sentimen', $class->data_crawling->id_sentimen)->first();
            if($prediksi && isset($prediksi->sentimen)){
                  $collection[] = [
                'id_testing' => $class->id_testing,
                'username' => $class->data_crawling->username,
                'tweet' => $class->data_crawling->tweet,
                'kategori' => $aktual->kategori,
                'prediksi' => $prediksi->sentimen->kategori,
            ];
            }
        }

        return view('visualisasi.prediksi', compact(['title','collection','testing_data','hasil']));
    }

更新

public function prediksi()
        {
            $collection = array();
            $title = "Data Prediksi Sentimen";
            $testing_data = DataTesting::count();
            $klasifikasi = DataTesting::with(['data_crawling','klasifikasi'])->get();
            foreach($klasifikasi as $class){
                $prediksi = Klasifikasi::with(['sentimen'])->where('id_testing',$class->id_testing)->first();
                $hasil = Hasil::where('id_testing',$class->id_testing)->get();
                $aktual = Sentimen::where('id_sentimen', $class->data_crawling->id_sentimen)->first();
                if($prediksi && isset($prediksi->sentimen)){
                      $collection[] = [
                    'id_testing' => $class->id_testing,
                    'username' => $class->data_crawling->username,
                    'tweet' => $class->data_crawling->tweet,
                    'kategori' => $aktual->kategori,
                    'prediksi' => $prediksi->sentimen->kategori,
                ];
                 $hasil_data[$class->id_testing][] = $hasil;
                }
            }

            return view('visualisasi.prediksi', compact(['title','collection','testing_data','hasil_data']));
        }

然后在你收集数据时在你的视图中

foreach($collection as $key){

  //to use hasil data
  foreach($hasil_data[$key['id_testing']] as $hasil){
     dd($hasil);

  }
}

【讨论】:

  • 非常感谢您的帮助
  • @Listyawan 您正在传递hasil 数据以供查看。但这是洞察力foreach() 检查数据在视图中是否正确
  • 我的数据没有显示,你能帮帮我吗?
  • @Listyawan 检查更新的答案
  • 我的观点是这样的 foreach($collection as $key) endforeach
猜你喜欢
  • 1970-01-01
  • 2017-08-02
  • 2018-04-14
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
相关资源
最近更新 更多