【问题标题】:ErrorException Trying to get property 'kode_buyer' of non-objectErrorException 试图获取非对象的属性“kode_buyer”
【发布时间】:2020-08-10 08:28:01
【问题描述】:

我正在尝试用我的数据库中的数据填充我的下拉列表

这是我的模特:

public function getBuyer($slug = false)
{
    if ($slug == false) {
        return $this->findAll();
    }

    return $this->where(['kode_divisi' => $slug])->first();
}

控制器:

public function produksi()
{
    $data = [
        'main' => 'buyer/produksi',
        'title' => 'List Produksi',
        'hasil' => $this->buyerModel->getbuyer()
    ];
    return view('template/template', $data);
}

然后查看:

<div class="content-wrapper">
<!-- Content Header (Page header) -->
<div class="content-header">
    <div class="container-fluid">
        <div class="row mb-2">
            <div class="col-md-10 col-sm-10 col-xs-10 mx-auto">
                <div class="card">
                    <div class="card-header bg-info" style="text-align: center;">
                        <h2>Form Tambah Data Pegawai</h2>
                    </div>
                    <form action="/pegawai/save" method="post">
                        <?= csrf_field(); ?>
                        <div class="form-group">
                            <label for="kode_divisi" class="col-sm-2 col-form-label">Kode Divisi</label>
                            <div class="col-sm-12">
                                <input type="date" name="bday" max="3000-12-31" 
                                min="1000-01-01" class="form-control">
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="name">Buyer</label>
                            <div class="controls">
                                <select required name="kode_gejala">
                                    <option value="" disabled diselected>-- Pilih Buyer --</option>
                                    <?php                                
                                    foreach ($hasil as $row) {  
                                        echo "<option value='".$row->kode_buyer."'>".$row->nama_buyer."</option>";
                                    }
                                    echo"
                                    </select>"
                                    ?>
                                </div>
                            </div>
                            <div class="form-group">
                                <label for="nama_pegawai" class="col-sm-2 col-form-label">Nama Pegawai</label>
                                <div class="col-sm-12">
                                    <input type="text" class="form-control" id="nama_pegawai" name="nama_pegawai" value="<?= old('nama_pegawai'); ?>">
                                </div>
                            </div>
                            <div class="form-group">
                                <label for="job_desc" class="col-sm-2 col-form-label">Job Desc</label>
                                <div class="col-sm-12">
                                    <input type="text" class="form-control" id="job_desc" name="job_desc" value="<?= old('job_desc'); ?>">
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-sm-12">
                                    <button type="submit" class="btn btn-info btn-lg"><i class="fa fa-plus"></i> Tambah Data</button>
                                    <a class="btn btn-danger btn-lg" href="/pegawai" role="button"><i class="fa fa-remove"></i> Batal</a>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

它给了我这个错误:

ErrorException Trying to get property 'kode_buyer' of non-object

它说这条线是错误的原因:

echo "<option value='".$row->kode_buyer."'>".$row->nama_buyer."</option>";

有没有办法解决这个问题?我已经尝试了一些替代方法,但它会导致同样的错误

我正在使用 Codeigniter 4 BTW。

【问题讨论】:

  • $data['hasil'] 在 foreach 中作为 $row 怎么样?
  • 你能把$data['hasil']的内容转储给我们看
  • 把这个'hasil' =&gt; $this-&gt;buyerModel-&gt;getbuyer()改成getBuyer()
  • 检查echo'&lt;pre&gt;';print_r($hasil);die; spits out. 将此行放在你的foreach循环之前。您将看到数组/对象结构,或者根本没有值。从那里拿走。
  • 在你的控制器中也做dd($data)在return语句之前

标签: php mysql codeigniter codeigniter-4


【解决方案1】:

根据您的评论,您的数据如下所示:

array(3) { ["main"]=> string(14) "buyer/produksi" 
           ["title"]=> string(13) "List Produksi" 
           ["dataku"]=> object(stdClass)#87 (5) { 
                ["kode_buyer"]=> string(5) "IK001" 
                ["nama_buyer"]=> string(13) "Ik Collection" ["pic"]=> string(13) "Wanda Purnomo" 
                ["no_tlp"]=> string(1) "0" 
                ["alamat"]=> string(6) "Cimahi" 
           } 
         }

这意味着kode_buyer 不在数组的顶层,而是dataku 的嵌套对象,因此$row-&gt;kode_buyer 给你一个错误,因为它不存在在那里。你需要通过这种方式访问​​kode_buyer:

$row["dataku"]->kode_buyer

【讨论】:

  • 感谢它完美运行。我也想问一下,我在哪里可以直接问一些关于如何编码的东西。就像可以说我想问“如何制作动态下拉列表但没有主键 ID”因为我知道你不能在这里问这样的问题,我想问这个的原因是因为我已经尝试了几种方法来做到这一点,但只是努力工作,即使是谷歌也没有答案。所以是的,如果你知道我可以在哪里问这样的问题会很有帮助。
  • 回答您的评论:您可以提出此类问题,显示并描述您遇到的问题,您尝试过的问题,为什么它不起作用,然后只显示 重现您的问题并阅读How to create a Minimal, Reproducible ExampleHow to Ask a Good Question 的基本 代码
  • 好的,我会按照你的指示,试着从中提出一个问题。再次感谢顺便说一句
猜你喜欢
  • 2017-08-02
  • 2018-04-14
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多