首頁 後端開發 php教程 [CI]CodeIgniter快速開髮指南

[CI]CodeIgniter快速開髮指南

Aug 08, 2016 am 09:30 AM
gt model this user where

------------------------------------------------- -------------------------------------------------- ------

使用CI以來最強烈的感受是其徹底的MVC設計, 舉個例子 : 在application/modesl目錄裡, 寫我們的模型操作, 統一繼承CI_Model.

而在控制器裡只寫邏輯, 無法直接操作資料庫, 需要資料直接呼叫模型, 最後是呼叫模板.

下面分別展示模型​​, 控制器, 和視圖間的協作.

<span>/*</span><span>*
 * 用户模型, 完整CURD示例
 * @Chenwei
 </span><span>*/</span>
<span>class</span> User_model <span>extends</span><span> CI_model<br>{
    </span><span>public</span> <span>function</span><span> __construct()
    {
        parent</span>::<span>__constrcut();
    }

    </span><span>/*</span><span>*
     * 查询用户信息, 这里不建议使用单一id参数作为条件, 为了便于控制器自己组装条件复用此模型方法
     * @param array 格式如: $where = array('id'=>1);
     * @return array
     </span><span>*/</span>
    <span>public</span> <span>function</span> userInfo(<span>$where = array()</span><span>)
    {
        </span><span>if</span>(<span>$where</span> && <span>is_array</span>(<span>$where</span><span>))
        {
            </span><span>$res</span> = <span>$this</span>->db->select('id, username, age')->where(<span>$where</span>)->get('users'<span>);

            </span><span>return</span> <span>$res</span>->result_array(); <span>//</span><span>以二维数组形式返回结果</span>
<span>        }
        </span><span>else</span><span>
        {<br>       $res = $this->db->select('id, username, age')->get('users');<br>
            </span><span>return</span> <span>$res->result_array()</span><span>;
        }
    }

    </span><span>/*</span><span>*
     * 添加用户
     * @param array 格式如: $data = array('username'=>'Chenwei', 'age'=>'18');
     * @reteurn bool
     </span><span>*/</span>
    <span>public</span> <span>function</span> userAdd(<span>$data</span><span>)
    {
        </span><span>if</span>(<span>$data</span> && <span>is_array</span>(<span>$data</span><span>))
        {
            </span><span>$bool</span> = <span>$this</span>->db->insert('users', <span>$data</span><span>);

            </span><span>return</span> <span>$bool</span><span>;
        }
        </span><span>else</span><span>
        {
            </span><span>return</span> <span>false</span><span>;
        }
    }

    </span><span>/*</span><span>*
     * 删除用户
     * @param int $id
     * @reteurn bool
     </span><span>*/</span>
    <span>public</span> <span>function</span> userDel(<span>$id</span><span>)
    {
        </span><span>if</span>(<span>$id</span><span>)
        {
            </span><span>$where</span> = <span>array</span>('id'=><span>$id</span><span>);

            </span><span>$bool</span> = <span>$this</span>->db->where(<span>$where</span>)->delete('users'<span>);

            </span><span>return</span> <span>$bool</span><span>;
        }
        </span><span>else</span><span>
        {
            </span><span>return</span> <span>false</span><span>;
        }
    }

    </span><span>/*</span><span>*
     * 修改用户
     * @param array $where 条件
     * @param array $data 新数据
     * @reteurn bool
     </span><span>*/</span>
    <span>public</span> <span>function</span> userEdit(<span>$where</span>, <span>$data</span><span>)
    {
        </span><span>if</span>(<span>$where</span> && <span>is_array</span>(<span>$where</span><span>))
        {
            </span><span>$bool</span> = <span>$this</span>->db->where(<span>$where</span>)->update('users', <span>$data</span><span>);

            </span><span>return</span> <span>$bool</span><span>;
        }
        </span><span>else</span><span>
        {
            </span><span>return</span> <span>false</span><span>;
        }
    }
}

</span><span>/*</span><span>*
 * 几点注意:
 * 1. 模型类名字User_model首字母大写, 其余字母小写, 继承基础模型类CI_Model
 * 2. 类文件名 application/models/user_model.php
 * 3. 控制器中如何载入此模型 : <br>    $this->load->model('User_model', 'user'); 这是以user为对象名引入;<br>    $this->load->model('User_model'); 这是默认以User_model为对象名引入. 模型文件支持子目录;<br>    如果类文件在application/models/blog/user_model.php中, 可以这样引入: $this->load->model('blog/User_model');
 * 4. 如果有需要, 你可以设置自动加载, 在 application/config/autoload.php文件中.<br> * 5. 如果没有设置自动连接数据库, 加在模型的时候可以设置连接, 像这样 $this->load->model('User_model', '', TRUE);
 </span><span>*/<br>Ps:<br>这里是一个联合查询的例子, 有需要可以尝试:<br>$res = $this->db->select('p.id, p.uid, p.order_no, p.amount, p.pay_way, p.pay_type, p.pay_bank, p.pay_time, p.goods_type, p.contact_tel, p.detail_desc, p.add_time, u.username')->from('payment as p')->join('users as u', 'p.uid = u.id')->order_by('p.id', 'desc')->get();</span>
登入後複製

<span>/*</span><span>*
 * 用户控制器, CURD示例
 * @Chenwei
 </span><span>*/</span>
<span>class</span> Users <span>extends</span><span> CI_Controller
{
    </span><span>public</span> <span>function</span><span> __construct()
    {
        parent</span>::<span>__construct();

        </span><span>$this</span>->load->model('User_model', 'user'<span>);
    }
    
    </span><span>/*</span><span>*
     * 用户列表
     </span><span>*/</span>
    <span>public</span> <span>function</span><span> index()
    {
        </span><span>$data</span>['user_list'] = <span>$this</span>->user-><span>userInfo();

        </span><span>$this</span>->load->view('user_list', <span>$data</span><span>);  //调用模板, 并将数据输出到前台
    }

    </span><span>/*</span><span>*
     * 添加用户
     </span><span>*/</span>
    <span>public</span> <span>function</span><span> user_add()
    {
        </span><span>$data</span> = <span>array</span><span>(
            </span>'username'=><span>$this</span>->input->post('name'<span>);
            </span>'age'=><span>intval</span>(<span>$this</span>->input->post('age'<span>));
        );

        </span><span>$bool</span> = <span>$this</span>->user->userAdd(<span>$data</span><span>);

        </span><span>if</span>(<span>$bool</span><span>)
        {
           </span><span>$this</span>->show_tips('操作成功 !'<span>);
        }
        </span><span>else</span><span>
        {
            </span><span>$this</span>->show_tips('操作失败 !'<span>);
        }
    }

    </span><span>/*</span><span>*
     * 修改用户
     </span><span>*/</span>
    <span>public</span> <span>function</span><span> user_edit()
    {
        </span><span>$id</span> = <span>$this</span>->input->post('id'<span>);

        </span><span>$data</span> = <span>array</span><span>(
            </span>'username'=><span>$this</span>->input->post('name'<span>);
            </span>'age'=><span>intval</span>(<span>$this</span>->input->post('age'<span>));
        );

        </span><span>if</span>(<span>$id</span><span>)
        {<br>       $where = array('id'=>$id);<br>
            </span><span>$bool</span> = <span>$this</span>->user->userEdit(<span>$where</span>, <span>$data</span><span>);

            </span><span>if</span>(<span>$bool</span><span>)
            {
               </span><span>$this</span>->show_tips('操作成功 !'<span>);
            }
            </span><span>else</span><span>
            {
                </span><span>$this</span>->show_tips('操作失败 !'<span>);
            }
        }
        </span><span>else</span><span>
        {
            </span><span>$this</span>->show_tips('非法操作 !'<span>);
        }
    }

    </span><span>/*</span><span>*
     * 删除用户
     </span><span>*/</span>
    <span>public</span> <span>function</span><span> user_del()
    {
        </span><span>$id</span> = <span>$this</span>->input->post('id'<span>);

        </span><span>$bool</span> = <span>$this</span>->user->userDel(<span>$id</span><span>);

        </span><span>if</span>(<span>$bool</span><span>)
        {
           </span><span>$this</span>->show_tips('操作成功 !'<span>);
        }
        </span><span>else</span><span>
        {
            </span><span>$this</span>->show_tips('操作失败 !'<span>);
        }
    }
}

</span><span>/*</span><span>*<br> * 几点注意:
 * 1. 控制器文件在 application/controller/users.php , 支持子目录
 * 2. 控制器名首字母必须大写, 且必须继承CI_Controller
 * 3. 前后台权限控制都在application/core/MY_Controller.php文件中,<br>    定义两个控制器, 分别用于前台和后台, 继承CI_Controller , 其余都只需继承这两个自定义的控制器即可.
 * 4. 定义默认控制器, 在 application/config/route.php
 </span><span>*/</span>
登入後複製

<span>/*</span><span>*
 * 视图层 示例
 * @Chenwei
 </span><span>*/</span>
<?<span>php
    </span><span>$this</span>->load->view('header'<span>);
</span>?>

<!-- 简单的输出 -->
<div>
    <table>
        <?php <span>if</span>(<span>$user_list</span>):?>
            <?php <span>foreach</span>(<span>$user_list</span> <span>as</span> <span>$v</span>):?>
            <tr><td><?=<span>$v</span>['username'];?></td></tr>
            <?php <span>endforeach</span>;?>
        <?php <span>endif</span>;?>
    </table>
</div>

<?<span>php
    </span><span>$this</span>->load->view('header'<span>);
</span>?>

<span>/*</span><span>*
 * 几点注意:
 * 1. 模板中可以直接使用控制器中分配的变量, 使用CI系统的所有函数和方法.
 * 2. 开启CI短标签支持后, 即使php未开启支持, CI也会帮我们自动解析, 可以放心使用.
 </span><span>*/</span>
登入後複製

可能存在手誤, 以上Code不要直接複製使用; 更多CI的實用用法, 可以隨時去查閱CI手冊.

Link: http://www.cnblogs.com/farwish/p/3991419.html

@黑眼詩人 

以上就介紹了[CI]CodeIgniter快速開髮指南,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

華為GT3 Pro和GT4的差異是什麼? 華為GT3 Pro和GT4的差異是什麼? Dec 29, 2023 pm 02:27 PM

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質是藍寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結果會更加的精準。 GT3pro:多了ECG心電圖和血管及安

修復:截圖工具在 Windows 11 中不起作用 修復:截圖工具在 Windows 11 中不起作用 Aug 24, 2023 am 09:48 AM

為什麼截圖工具在Windows11上不起作用了解問題的根本原因有助於找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對焦助手已開啟:這可以防止截圖工具開啟。應用程式損壞:如果截圖工具在啟動時崩潰,則可能已損壞。過時的圖形驅動程式:不相容的驅動程式可能會幹擾截圖工具。來自其他應用程式的干擾:其他正在運行的應用程式可能與截圖工具衝突。憑證已過期:升級過程中的錯誤可能會導致此issu簡單的解決方案這些適合大多數用戶,不需要任何特殊的技術知識。 1.更新視窗與Microsoft應用程式商店應用程

Trezor冷錢包:Model One與Model T的特性與使用指南 Trezor冷錢包:Model One與Model T的特性與使用指南 Jan 19, 2024 pm 04:12 PM

在許多中心化交易所出現問題後,越來越多的幣圈投資者開始將資產轉移到冷錢包中,以減少中心化交易所帶來的風險。本文將介紹全球最早的冷錢包供應商Trezor,自2014年推出首款冷錢包至今,在全球多個國家銷售。 Trezor的產品包括2014年推出的ModelOne和2018年推出的進階版本ModelT。以下將繼續介紹這兩款產品與其他冷錢包的差異。什麼是Trezor冷錢包? 2014年,Trezor推出了第一款冷皮夾ModelOne。除了常見的BTC、ETH、USDT等幣種外,該錢包還支援超過1000種其

如何修復無法連線到iPhone上的App Store錯誤 如何修復無法連線到iPhone上的App Store錯誤 Jul 29, 2023 am 08:22 AM

第1部分:初始故障排除步驟檢查蘋果的系統狀態:在深入研究複雜的解決方案之前,讓我們先從基礎知識開始。問題可能不在於您的設備;蘋果的伺服器可能會關閉。造訪Apple的系統狀態頁面,查看AppStore是否正常運作。如果有問題,您所能做的就是等待Apple修復它。檢查您的網路連接:確保您擁有穩定的網路連接,因為「無法連接到AppStore」問題有時可歸因於連接不良。嘗試在Wi-Fi和行動數據之間切換或重置網路設定(「常規」>「重置」>「重置網路設定」>設定)。更新您的iOS版本:

Laravel 集合中的 Where 方法實用指南 Laravel 集合中的 Where 方法實用指南 Mar 10, 2024 pm 04:36 PM

Laravel集合中的Where方法實用指南在Laravel框架的開發過程中,集合(Collection)是一個非常有用的資料結構,它提供了豐富的方法來操作資料。其中,Where方法是常用的篩選方法,能夠根據指定條件來過濾集合中的元素。本文將介紹Laravel集合中Where方法的使用,透過具體的程式碼範例來示範其用法。 1.基本用法Where方法的

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

docker掛載目錄權限問題怎麼解決 docker掛載目錄權限問題怎麼解決 Feb 29, 2024 am 10:04 AM

在Docker中,掛載目錄的權限問題通常可以透過以下方法解決:使用-v參數指定掛載目錄時新增權限相關的選項。可以透過在掛載的目錄後面新增:ro或:rw來指定掛載目錄的權限,分別表示只讀和讀寫權限。例如:dockerrun-v/host/path:/container/path:roimage_name在Dockerfile中定義USER指令來指定容器中執行的用戶,以確保容器內部的操作符合權限要求。例如:FROMimage_name#CreateanewuserRUNuseradd-ms/bin/

Laravel 集合如何使用 Where 方法 Laravel 集合如何使用 Where 方法 Mar 10, 2024 pm 10:21 PM

Laravel集合中如何使用Where方法Laravel是一個流行的PHP框架,它提供了豐富的功能和工具,方便開發者快速建立應用程式。其中,集合(Collection)是Laravel中一個非常實用且強大的資料結構,開發者可以使用集合對資料進行各種操作,例如過濾、映射、排序等。在集合中,Where方法是一個常用的方法,用於根據指定的條件過濾集

See all articles