Ошибка при попытке получить свойство не объектного ди кода воспламенителя - PullRequest
1 голос
/ 25 марта 2020

Добрый вечер, я получаю эту проблему в коде воспламенителя, когда он будет отображать данные. в разделе просмотра я пишу

<?= base_url() . 'lihat/transaksi/' . $transaksi->id_pemesanan ?>" target="_blank">#<?= $transaksi->id_pemesanan ?>

контроллер написан так

    public function __construct()
    {
        parent::__construct();
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'jpg|png|jpeg';
        $config['max-size'] = 10240;

        $this->load->library('upload',$config);
        $this->load->model('KonfirmasiModel');
        $this->load->model('TransaksiModel');
    }

    public function index()
    {
        $data['transaksi'] = $this->TransaksiModel->myTransaction();
        $this->template('index',$data);
    }

    public function template($page, $data = null)
    {
        $this->load->view('templates/pelanggan/header');
        $this->load->view('templates/pelanggan/sidemenu');
        $this->load->view('pelanggan/konfirmasi/'.$page,$data);
        $this->load->view('templates/pelanggan/footer');
    }

    public function store()
    {
        if (!$this->upload->do_upload('foto')) {
            $error = array('error' => $this->upload->display_errors());
            $this->template('index',$error);
            return;
        }

        $data = array(
            'pelanggan_id' => $this->session->userdata('user_id'),
            'pemesanan_id' => $this->input->post('pemesanan_id'),
            'nama_bank' => $this->input->post('nama_bank'),
            'no_rek' => $this->input->post('no_rek'),
            'pemilik' => $this->input->post('pemilik')
        );

        // UPLOAD IMAGE
        $this->upload->do_upload('foto');
        $data['foto'] = $this->upload->data('file_name');

        // var_dump($data);

        // INSERT INTO DATABASE
        $this->db->insert('konfirmasi',$data);

        // REDIRECT TO USER PAGE
        $this->session->set_flashdata('success','Konfirmasi berhasil dilakukan!');
        redirect(base_url() . 'pelanggan/');
    }

}

модель написана так

class KonfirmasiModel extends CI_Model {

    public function getConfirmation()
    {
        $this->db->select('*');
        $this->db->from('konfirmasi');
        $this->db->join('pelanggan','pelanggan.pelanggan_id = konfirmasi.pelanggan_id','left');
        $this->db->join('pemesanan','pemesanan.id_pemesanan = konfirmasi.pemesanan_id','left');
        $query = $this->db->get();
        return $query->result();
    }

}

пожалуйста, помогите мне, я искал пути, связанные с этой проблемой, но не нашел решения ...

перед этим я говорю спасибо всем, кто помог мне.

Ответы [ 4 ]

0 голосов
/ 26 марта 2020

используйте это, а также распечатайте и проверьте свои данные, получая объект или массив

$transaksi['id_pemesanan']// used if data getting array
0 голосов
/ 25 марта 2020

Вы должны использовать isset, чтобы проверить, что $ transaksi имеет данные, или не использовать следующий код:

<?php

$pemesananid = isset($transaksi->id_pemesanan) ? $transaksi->id_pemesanan : 0;

echo base_url() . 'lihat/transaksi/' . $pemesananid; ?>" target="_blank">#<?= $transaksi->id_pemesanan

?>
0 голосов
/ 25 марта 2020

Вы ошиблись model. Вы используете TransaksiModel, а не KonfirmasiModel.

$data['transaksi'] = $this->TransaksiModel->myTransaction();

Основываясь на возвращении результата из myTransaction(), вы должны понимать, как использовать его позже.

Если он возвращает массив:

$transaksi['key']

Если он возвращает объект:

$transaksi->key

Если он иногда может быть пустым - вы должны проверить его с помощью isset() или empty() или обоих в один раз.

Каждое неопределенное свойство (в случае объекта) / индекс (в случае массива) вызовет ошибку.

Если вы используете PHP переменная, которая не была объявлена ​​ранее - вы получите общую неопределенную ошибку.

Небольшой совет: используйте base_url('lihat/transaksi/' . $variable)

0 голосов
/ 25 марта 2020

Попробуйте использовать вот так. Модель Codeigniter возвращает ассоциативный массив, и вы пытались получить свойство как объект класса std.

<?= base_url() . 'lihat/transaksi/' . $transaksi['id_pemesanan'] ?>" target="_blank">#<?= $transaksi['id_pemesanan'] ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...