错误:“调用未定义的方法CodeIgniter\Database\MySQLi\Connection::select()”

pvcm50d1  于 2023-03-06  发布在  Mysql
关注(0)|答案(3)|浏览(113)

我正在努力解决这个错误,但不理解它。
型号:

public function join()
{
    $db = \Config\Database::connect();
    $session = \Config\Services::session();
    $id = $session->get('id');

    $db->select('subject_tbl.subject, mark_tbl.mark');
    $db->from('subject_tbl');
    $db->join('mark_tbl', 'mark_tbl.sub_id = subject_tbl.sub_id');
    $db->where('mark_tbl.id', $id);
    $query = $db->get();
    return $query->result();
}

它返回错误:
调用未定义的方法CodeIgniter\Database\MySQLi\Connection::select()
控制器:

public function s_mark()
{
    $session = \Config\Services::session();
    if($session->has('id'))
    {
        $data['val'] = $this->obj->join();

        return view('mark_s', $data);
    }
}
ltskdhd1

ltskdhd11#

在控制器文件中,进行一些更改:

public function __construct()
{
    parent::__construct();
    $this->joinModel = model('ModelNameHere');
}

public function s_mark()
{
    $session = \Config\Services::session();
    if($session->has('id'))
    {
        $data['val'] = $this->joinModel->join();

        return view('mark_s', $data);
    }
}
vawmfj5a

vawmfj5a2#

两年后,又遇到了同样的问题,不得不去寻找答案。
您在模型中犯了一个错误。只有在第一次使用table()方法时才会加载查询生成器。在此之前,它不会加载到内存中(从他们的官方文档)
因此,将型号代码更改为

public function join()
{
    $db = \Config\Database::connect();
    $session = \Config\Services::session();
    $id = $session->get('id');
    $builder = $db->table('subject_tbl');

    $builder->select('subject_tbl.subject, mark_tbl.mark');
    $builder->join('mark_tbl', 'mark_tbl.sub_id = subject_tbl.sub_id');
    $builder->where('mark_tbl.id', $id);
    $query = $builder->get();
    return $query->result();
}
y1aodyip

y1aodyip3#

我检查了你的源代码。你在.env文件中配置好数据库设置了吗?

相关问题