我遇到了问题。希望有人能帮忙。我使用codeigniter来构建我的应用程序。现在我已经想出了为整个应用程序创建单个模型。但是怎么可能?我的大四学生也问我这个问题,并告诉我这不可能。但我非常接近成功。唯一缺少的是将数据从控制器传递给模型的构造函数。
其实我的想法背后是: - >我将所有数据发送到模型的构造函数(如果可能)
- >然后验证数据(使用我自己的验证类)
- >动态设置类属性(使用标准类)
- >执行查询(查询类型将驻留在通过控制器传递的数据数组中)。
假设array[0]
存储'insert'
,因此我将使用以下代码执行查询:$this->array[0]->.. etc
但是我的1步对我来说是个大问题。我不能说进一步的事情会起作用。
答案 0 :(得分:3)
我没有得到你真正想要的东西,看起来你打算为CI框架已经为你做的很多东西编写你自己的代码。
以下是如何将数据从控制器传递到模型的示例:
class Foo extends CI_Controller {
function bar()
{
$data=array('foo'=>'bar', 'abc'=> 'def');
$this->load->model('my_model');
$this->my_model->do_something($data);
}
}
class My_model extends CI_Model {
function do_something($data=array())
{
print_r($data);
}
}
您可以为插入编写自己的模型函数:
function insert_data($table, $data=array()) {
$this->db->insert($table, $data);
// etc
}
但这只是活动记录 - 已经存在的功能。
如有必要,您可以将数据传递给模型构造函数,是的。听起来你应该重新考虑一下你的方法。
验证可以在控制器(实际上是模型)中完成,使用CI的验证类,可以根据需要进行扩展。