gpt4 book ai didi

php - Codeigniter:模型问题!

转载 作者:行者123 更新时间:2023-12-03 01:30:04 25 4
gpt4 key购买 nike

我刚刚对模型产生了疑问......

这是我的第一个 100% MVC 项目(有点)...我的疑问是...当我对多个表执行连接、联合或其他功能时...我该怎么做?使用“主表”的相同模型文件,或者我需要使用两个或任何表创建一个新的模型文件?

Tkz...罗伯托!

最佳答案

你可以随心所欲地做。模型不必仅限于单个表,您可以从任何地方 JOIN、UNION 和 UPDATE 任何您喜欢的表。

为了进一步推进 Donny Kurnia 的建议,Jamie Rumbleow 已经编写了一个非常好的现有 MY_Model(我自己也做出了一些贡献),其中包含几个 get、count、insert 等方法。这些允许您通过创建从 MY_Model 扩展的空模型来简单地满足最基本的 CRUD 要求。

这对于单表获取/插入/删除来说非常有用,但是当涉及到创建需要连接的方法时,最好的办法就是自己编写它们。

连接表时,您需要根据表名称/别名设置 WHERE,如果不小心,您会发现冲突的字段名称,这意味着创建一个通用解决方案来管理来自 MY_Model 的所有连接查询要么会非常困难困难或只是一团糟。

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Tickets_m extends MY_Model
{
// Basic get, insert, delete stuff handled in MY_Model

function get_client_tickets($category_slug = '')
{
$this->db->select('t.*')
->select('c.title as category_title, c.slug as category_slug')
->select('p.name as priority_name')
->join('categories c', 'c.id = t.category_id')
->join('priorities p', 'p.id = t.priority_id')
->from('tickets t')
->where('c.client_id', CLIENT_ID);

if($category_slug)
{
$this->db->where('c.slug', $category_slug);
}

return $this->db->get()->result();
}

function get_client_ticket($id)
{
$this->db->select('t.*')
->select('c.title as category_title, c.slug as category_slug')
->select('p.name as priority_name')
->join('categories c', 'c.id = t.category_id')
->join('priorities p', 'p.id = t.priority_id')
->from('tickets t')
->where('c.client_id', CLIENT_ID)
->where('t.id', $id);

return $this->db->get()->row();
}

function insert($ticket)
{
$this->load->helper('date');

$ticket['created_on'] = now();

return parent::insert($ticket);
}

}

这是我目前正在使用的一个非常简单模型的示例,它展示了我将 MY_Model 的 get、get_by、insert、update 的使用与一些包含联接和额外数据的自定义方法结合起来。

您还可以看到我重载了 insert() 以自动添加创建日期,而无需在可能创建或更新票证的每个 Controller 中进行设置。

如果您需要更多神奇的自动细木工疯狂,请尝试 ORM 类似 DoctrineDataMapper

关于php - Codeigniter:模型问题!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2106854/

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