gpt4 book ai didi

php - 调用未定义的方法 CodeIgniter\Database\MySQLi\Connection::like()

转载 作者:行者123 更新时间:2023-12-04 08:43:52 25 4
gpt4 key购买 nike

我的模型中有我喜欢的查询,但它不起作用
模型:

<?php namespace App\Models;

use CodeIgniter\Model;

class SearchModel extends Model
{
protected $table = 'sport_tbl';
protected $primaryKey = 'id';
protected $returnType = 'array';

public function search($word)
{
$this->db->like('title', $word);
$res = $this->db->get('sport_tbl')->result_array();
return $res;
}
}
Controller :
<?php namespace App\Controllers\api;
use App\Controllers\BaseController;
use App\Models\SearchModel;

class Search extends BaseController
{
public function index()
{
$searchModel = new SearchModel();

$data['allnews'] = $searchModel->search('test');

return view('welcome_message', $data);
}
}
这是错误:
调用未定义的方法 CodeIgniter\Database\MySQLi\Connection::like()

最佳答案

您基本上使用的是 Codeigniter 3 中的旧查询构建器样式,而不是 Codeigniter 4。
在 Codeigniter 4 中,您的代码应如下所示。

<?php namespace App\Models;

use CodeIgniter\Model;

class SearchModel extends Model
{
protected $table = 'sport_tbl';
protected $primaryKey = 'id';
protected $returnType = 'array';

public function search($word)
{
$db = \Config\Database::connect();
$builder = $db->table('sport_tbl');
$builder->like('title', $word);
return $builder->get()->getResultArray();
}
}
在这种情况下,您的 Controller 应该是一样的。
但是,还有另一种方法可以在不创建新数据库对象并使用自动为您创建的相同对象的情况下执行相同操作。
<?php namespace App\Models;

use CodeIgniter\Model;

class SearchModel extends Model
{
protected $table = 'sport_tbl';
protected $primaryKey = 'id';
protected $returnType = 'array';

public function search($word)
{
$this->like('title', $word);
return $builder->get()->getResultArray();
}
}
在这种情况下,您的 Controller 应该有点不同:
<?php namespace App\Controllers\api;
use App\Controllers\BaseController;
use App\Models\SearchModel;

class Search extends BaseController
{
public function index()
{
$searchModel = new SearchModel();

$data['allnews'] = $searchModel->search('test')->getAll();

return view('welcome_message', $data);
}
}
代码的第二个版本实际上更好,因为这样您可以在模型中拥有任意数量的函数,然后只需在始终返回 $this 的链语句中调用它们。

关于php - 调用未定义的方法 CodeIgniter\Database\MySQLi\Connection::like(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64426608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com