Codeigniter 4 -从数据库中提取图像时,尝试读取bool上的属性“bannerimg”

polkgigr  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(106)

因此,我正在为我的Web应用程序创建carousel,我正在使用新的CodeIgniter 4。到目前为止,我已经成功地上传了图像,但我似乎无法获取图像以在前端显示它。它给我以下错误-尝试读取布尔值上的属性“bannerimg”。

编辑-我正在尝试从数据库中提取所有图像(当前存储了4个图像)
我的数据库表

Database table for carousel - Please check this image too!
下面是代码

在AdminModel中获取图像的函数

//This functions gets the images from db
public function getBanner() {

                $builder = $this->db->table('tblbanner');
                $result = $builder->get();

                if(count($result->getResultArray()) == 1) {

                        return $result->getRow();

                } else {

                        return false;
                        
                }

        }

管理控制器

public function banners() 

    {
        if(!session()->has('logged_staff')) {

                return redirect()->to(base_url(). "/team");
    
        }
        $data = [];
        $data['validation'] = null;
        $suid = session()->get('logged_staff');

        $data['getad'] = $this->adminModel->getBanner(); // This line of fetches the images from database.
        $data['staffdata'] = $this->adminModel->getLoggedStaffData($suid);

        echo view("team/Templates/header_panel");
        echo view("team/navigation", $data);
        echo view("team/sidebar", $data);
        echo view("team/banners", $data);
        echo view("team/Templates/footer_panel");
    }

查看文件

<div class="card-body">
                          <div class="table-responsive">
                                <table class="table table-bordered table-striped" id="jsdata">
                                <thead>
                                  <tr>
                                    <th class="text-center">Edit Image</th>
                                    <th class="text-center">Ad Image</th>
                                    <th class="text-center">Upload Date</th>
                                    <th class="text-center">Delete Image</th>
                                  </tr>
                                </thead>
                                <tbody>
                                  <tr>
                                    <td class="text-center"><a class="btn bg-success"><i class="fas fa-edit"></i></a></td>
                                    <td class="text-center">

    **// The image fetched from database is displayed here //**

                                    <?php if($getad->bannerimg != '') : ?>
                                      <img class="profile-user-img img-fluid" src="<?= $getad->bannerimg; ?>" alt="Ad">
                                      <?php else : ?>
                                      <img class="profile-user-img img-fluid" src="<?= base_url(); ?>/public/assets/img/no-image.png" alt="Ad">
                                      <?php endif; ?>

   **// The image fetched from database is displayed here //**

                                    </td>
                                    <td class="text-center"><?= $getad->uploaded; ?></td>
                                    <td class="text-center"><a class="btn bg-danger"><i class="fas fa-trash"></i></a></td>
                                  </tr>
                                </tbody>
                              </table>
                          </div>
                      </div>
                      <!-- /.card-body -->
                    </div>
wtzytmuj

wtzytmuj1#

如果该表中有多个图像,则将返回false

if(count($result->getResultArray()) == 1) {
                    return $result->getRow();
            } else {
                    return false;                        
            }

所以$data['getad']和视图中的$getad将是false。另外,您获取了一个数组,但随后尝试将其作为对象$getad->bannerimg访问。
由于您只需要一行,请去掉if语句,只使用return对象:

return $result->getRow();

然后在模板中,只需:

<?php if(!empty($getad->bannerimg)) : ?>

相关问题