ホームページ php教程 PHP开发 CodeIgniter の学習メモ 項目 5 -- CI における AR

CodeIgniter の学習メモ 項目 5 -- CI における AR

Dec 29, 2016 am 10:23 AM

AR (アクティブ レコード)

AR が有効な場合 (CI3.0 はデフォルトで起動され、設定項目がありません)、テーブルの結果セットは

$this->db
ログイン後にコピー



[code]// AR会自动加上表前缀,因此get方法中的表名不用加上表前缀
$res = $this->db->get('user');
foreach ($res->result() as $item)
{
    echo $item->name . "
"; }
ログイン後にコピー


の get メソッドを通じて取得できます。 insert メソッドは単にレコードを挿入できます。パラメータはテーブル名と連想配列です

[code]$data = array('name'=>'mary', 'password'=>md5('mary'));
$result = $this->db->insert('user', $data);
ログイン後にコピー


最初のパラメータは指示で、2 番目のパラメータは変更された内容です。連想配列で表され、3番目のパラメータはクエリ条件です

[code]$data = array ('email'=>'mary@gmail.com', 'password'=>md5('123456'));
$this->db->update('user', $data, array('name'=>'mary'));
ログイン後にコピー


deleteメソッドでレコードを削除します。最初のパラメータはテーブル名、2番目のパラメータはクエリ条件です

[code]$this->db->delete('user', array('name'=>'mary'));
ログイン後にコピー




より複雑な SQL ステートメントの場合は、AR が提供する一貫した操作を使用してクエリを実行できます

注:limit のパラメーターの順序は SQL の順序と逆です。表示されるアイテムの数、2 番目のパラメーターはスキップされるアイテムの数を表します

さまざまなクエリ条件での where ステートメントの書き方


[code]$result = $this->db->select('id, name')
            ->from('user')
            ->where('id >=', 1)
            ->limit(3,1)
            ->order_by('id desc ')
            ->get();
ログイン後にコピー

last_query() メソッドを使用して、コヒーレントを通じて AR によって組み立てられた SQL ステートメントを取得できます操作



[code]where('name', 'mary')或where('name =', 'mary'):表示查询条件是name字段值是mary
where(array('name'=>'mary', 'id >'=>'1'));:表示查询条件有两个,name字段值是mary并且id字段值是1
ログイン後にコピー

AR を通じて実行できるのは単純なクエリのみです。複雑なクエリの場合は、クエリ


select に $this->db->query($sql, $data)
を使用することをお勧めします。データ

次の関数は、SQL SELECT ステートメントの作成に役立ちます。

注: PHP5 を使用している場合は、複雑な状況でチェーン構文を使用できます。詳細な説明はこのページの下部に記載されています。


[code]$this->db->last_query();
ログイン後にコピー

選択クエリ ステートメントを実行し、結果セットを返します。テーブルの全データを取得できます。



[code]$this->db->get();
ログイン後にコピー

2 番目と 3 番目のパラメータを使用すると、結果セットのページごとのレコード数 (制限) と結果セットのオフセットを設定できます



[code]$query = $this->db->get('mytable');
// Produces: SELECT * FROM mytable
ログイン後にコピー

注: 2 番目のパラメータはレコード数ですページごとに、3 番目のパラメーターはオフセットです

上記の関数は変数 $query
によって実行され、この $query
を使用して結果セットを表示できることがわかります。

[code]$query = $this->db->get('mytable', 10, 20);
// Produces: SELECT * FROM mytable LIMIT 20, 10 (in MySQL. Other databases have slightly different syntax)
ログイン後にコピー

は、db->where() を使用せずに関数の 2 番目のパラメーターに where 句を追加できる点を除いて、上記の関数と同じです。この関数:


[code]$query = $this->db->get('mytable');
foreach ($query->result() as $row)
{
    echo $row->title;
}
[code]$this->db->get_where();
ログイン後にコピー

注: get_where ( ) は、以前のバージョンでは getwhere() として記述されていましたが、これは廃止された使用法であり、getwhere() はコードから削除されました。



[code]$query = $this->db->get_where('mytable', array('id' => $id), $limit, $offset);
ログイン後にコピー

SQL クエリの SELECT 部分を記述できます:



[code]$this->db->select();
ログイン後にコピー

注: テーブル内のすべての行をクエリする場合は、この関数を記述する必要はありません。省略すると、CodeIgniter はすべての行をクエリする (SELECT *) とみなします。



[code]$this->db->select('title, content, date');
$query = $this->db->get('mytable');
// Produces: SELECT title, content, date FROM mytable
ログイン後にコピー
$this->db->select()
ログイン後にコピー

連想配列メソッド:



[code]$this->db->select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4') AS amount_paid', FALSE); 
$query = $this->db->get('mytable');
ログイン後にコピー

この関数は上記の関数とほぼ同じですが、唯一の違いは、複数のインスタンスが OR で接続されていることです:



[code]$array = array('title' => $match, 'page1' => $match, 'page2' => $match);
$this->db->like($array); 
// WHERE title LIKE '%match%' AND page1 LIKE '%match%' AND page2 LIKE '%match%'
$this->db->or_like();
ログイン後にコピー

説明: or_like( ) は以前はorlike() と呼ばれますが、これは非推奨となり、orlike() はコードから削除されました。


[code]$this->db->like('title', 'match');
$this->db->or_like('body', $match); 
// WHERE title LIKE '%match%' OR body LIKE '%match%'
ログイン後にコピー

この関数は like() とほぼ同じです。唯一の違いは、NOT LIKE ステートメントを生成することです:



[code]$this->db->not_like();
ログイン後にコピー

この関数は not_like() とほぼ同じです。唯一の違いは、複数のインスタンス間の接続です。 OR を使用:



[code]$this->db->not_like('title', 'match');
// WHERE title NOT LIKE '%match%
$this->db->or_not_like();
ログイン後にコピー

クエリ ステートメントの GROUP BY 部分を記述できます:


[code]$this->db->like('title', 'match');
$this->db->or_not_like('body', 'match'); 
// WHERE title LIKE '%match%' OR body NOT LIKE '%match%'
$this->db->group_by();
ログイン後にコピー

複数の値を配列として渡すこともできます:



[code]$this->db->group_by("title"); 
// 生成: GROUP BY title
ログイン後にコピー

説明: group_by() 1 回groupby() と呼ばれますが、後者は非推奨となり、groupby() はコードから削除されました。



[code]$this->db->group_by(array("title", "date")); 
// 生成: GROUP BY title, date
ログイン後にコピー

「DISTINCT」キーワードをクエリに追加します:



[code]$this->db->distinct();
ログイン後にコピー

を使用すると、クエリの HAVING 部分を記述することができます。 2 つの構文形式があり、1 つまたは 2 つのパラメータが受け入れられます:


[code]$this->db->distinct();
$this->db->get('table');
// 生成: SELECT DISTINCT * FROM table
$this->db->having();
ログイン後にコピー

CodeIgniter によってエスケープ保護されているデータベースを使用している場合、コンテンツのエスケープを避けるために、オプションの 3 番目のパラメータを渡し、それを FALSE に設定できます。 。


[code]$this->db->having('user_id = 45'); 
// 生成: HAVING user_id = 45
$this->db->having('user_id', 45); 
// 生成: HAVING user_id = 45
你也可以把多个值通过数组传递过去:
[code]$this->db->having(array('title =' => 'My Title', 'id <' => $id)); 
// 生成: HAVING title = 'My Title', id < 45
ログイン後にコピー

は、have() 関数とほぼ同じですが、唯一の違いは、複数の句が "OR" で区切られていることです。



[code]$this->db->having('user_id', 45); 
// 生成: HAVING `user_id` = 45 (在诸如MySQL等数据库中) 
$this->db->having('user_id', 45, FALSE); 
// 生成: HAVING user_id = 45
$this->db->or_having();
ログイン後にコピー

は、ORDER BY 句の設定に役立ちます。最初のパラメータは、並べ替えるフィールドの名前です。 2 番目のパラメーターは、結果の順序を設定します。使用可能なオプションには、asc (昇順)、desc (降順)、またはrandom (ランダム) があります。



[code]$this->db->order_by();
ログイン後にコピー

最初のパラメータに独自の文字列を渡すこともできます:



[code]$this->db->order_by("title", "desc"); 
// 生成: ORDER BY title DESC
ログイン後にコピー

あるいは、この関数を複数回呼び出して、複数のフィールドを並べ替えます。



[code]$this->db->order_by('title desc, name asc'); 
// 生成: ORDER BY title DESC, name ASC
ログイン後にコピー

注: order_by() は、以前は orderby() と呼ばれていましたが、これは廃止され、orderby() はコードから削除されました。

注: 現在、Oracle および MSSQL ドライバーはランダムな並べ替えをサポートしておらず、デフォルトで「ASC」(昇順) に設定されます。


[code]$this->db->order_by("title", "desc");
$this->db->order_by("name", "asc"); 
// 生成: ORDER BY title DESC, name ASC
ログイン後にコピー

クエリによって返される結果の数を制限します:



[code]$this->db->limit();
ログイン後にコピー

2 番目のパラメータは結果のオフセットを設定します。



[code]$this->db->limit(10, 20);
// 生成: LIMIT 20, 10 (仅限MySQL中。其它数据库有稍微不同的语法)
$this->db->count_all_results();
ログイン後にコピー

允许你获得某个特定的Active Record查询所返回的结果数量。可以使用Active Record限制函数,例如 where(),or_where()
, like(), or_like() 等等。范例:

[code]echo $this->db->count_all_results('my_table');
// 生成一个整数,例如 25
$this->db->like('title', 'match');
$this->db->from('my_table');
echo $this->db->count_all_results();
// 生成一个整数,例如 17
ログイン後にコピー

插入数据

[code]$this->db->insert();
ログイン後にコピー


生成一条基于你所提供的数据的SQL插入字符串并执行查询。你可以向函数传递 数组 或一个 对象。下面是一个使用数组的例子:

[code]$data = array(
               'title' => 'My title' ,
               'name' => 'My Name' ,
               'date' => 'My date'
            );
$this->db->insert('mytable', $data); 
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')
ログイン後にコピー

第一个参数包含表名,第二个是一个包含数据的关联数组。

下面是一个使用对象的例子:

[code]/*
    class Myclass {
        var $title = 'My Title';
        var $content = 'My Content';
        var $date = 'My Date';
    }
*/
$object = new Myclass;
$this->db->insert('mytable', $object); 
// Produces: INSERT INTO mytable (title, content, date) VALUES ('My Title', 'My Content', 'My Date')
ログイン後にコピー


第一个参数包含表名,第二个是一个对象。(原文有错:The first parameter will contain the table name, the second is an associative array of values.)

注意: 所有的值已经被自动转换为安全查询。

[code]$this->db->set();
ログイン後にコピー

本函数使您能够设置inserts(插入)或updates(更新)值。

它可以用来代替那种直接传递数组给插入和更新函数的方式:

[code]$this->db->set('name', $name); 
$this->db->insert('mytable'); 
// 生成: INSERT INTO mytable (name) VALUES ('{$name}')
ログイン後にコピー

如果你多次调用本函数,它们会被合理地组织起来,这取决于你执行的是插入操作还是更新操作:

[code]$this->db->set('name', $name);
$this->db->set('title', $title);
$this->db->set('status', $status);
$this->db->insert('mytable');
ログイン後にコピー


set() 也接受可选的第三个参数($escape),如果此参数被设置为 FALSE,就可以阻止数据被转义。为了说明这种差异,这里将对 包含转义参数 和 不包含转义参数 这两种情况的 set() 函数做一个说明。

[code]$this->db->set('field', 'field+1', FALSE);
$this->db->insert('mytable'); 
// 得到 INSERT INTO mytable (field) VALUES (field+1)
$this->db->set('field', 'field+1');
$this->db->insert('mytable'); 
// 得到 INSERT INTO mytable (field) VALUES ('field+1')
ログイン後にコピー

你也可以将一个关联数组传递给本函数:

[code]$array = array('name' => $name, 'title' => $title, 'status' => $status);
$this->db->set($array);
$this->db->insert('mytable');
ログイン後にコピー

或者一个对象也可以:

[code]/*
    class Myclass {
        var $title = 'My Title';
        var $content = 'My Content';
        var $date = 'My Date';
    }
*/
$object = new Myclass;
$this->db->set($object);
$this->db->insert('mytable');
ログイン後にコピー

更新数据

[code]$this->db->update();
ログイン後にコピー

根据你提供的数据生成并执行一条update(更新)语句。你可以将一个数组或者对象传递给本函数。这里是一个使用数组的例子:

[code]$data = array(
               'title' => $title,
               'name' => $name,
               'date' => $date
            );
$this->db->where('id', $id);
$this->db->update('mytable', $data); 
// 生成:
// UPDATE mytable 
// SET title = '{$title}', name = '{$name}', date = '{$date}'
// WHERE id = $id
ログイン後にコピー

或者你也可以传递一个对象:

[code]/*
    class Myclass {
        var $title = 'My Title';
        var $content = 'My Content';
        var $date = 'My Date';
    }
*/
$object = new Myclass;
$this->db->where('id', $id);
$this->db->update('mytable', $object); 
// 生成:
// UPDATE mytable 
// SET title = '{$title}', name = '{$name}', date = '{$date}'
// WHERE id = $id
ログイン後にコピー

说明: 所有值都会被自动转义,以便生成安全的查询。

你会注意到

$this->db->where()
ログイン後にコピー
[code]$this->db->update('mytable', $data, "id = 4");
ログイン後にコピー

或者是一个数组:

[code]$this->db->update('mytable', $data, array('id' => $id));


在进行更新时,你还可以使用上面所描述的 $this->db->set() 函数。

删除数据

[code]$this->db->delete();
ログイン後にコピー

生成并执行一条DELETE(删除)语句。

[code]$this->db->delete('mytable', array('id' => $id)); 
// 生成:
// DELETE FROM mytable 
// WHERE id = $id
ログイン後にコピー

第一个参数是表名,第二个参数是where子句。你可以不传递第二个参数,使用 where() 或者 or_where() 函数来替代它:

[code]$this->db->where('id', $id);
$this->db->delete('mytable'); 
// 生成:
// DELETE FROM mytable 
// WHERE id = $id
ログイン後にコピー


如果你想要从一个以上的表中删除数据,你可以将一个包含了多个表名的数组传递给delete()函数。

[code]$tables = array('table1', 'table2', 'table3');
$this->db->where('id', '5');
$this->db->delete($tables);
ログイン後にコピー

如果你想要删除表中的全部数据,你可以使用 truncate() 函数,或者 empty_table() 函数。

[code]$this->db->empty_table();
ログイン後にコピー

生成并执行一条DELETE(删除)语句。

[code] $this->db->empty_table('mytable'); 
// 生成
// DELETE FROM mytable
$this->db->truncate();
ログイン後にコピー


生成并执行一条TRUNCATE(截断)语句。

[code]$this->db->from('mytable'); 
$this->db->truncate(); 
// 或 
$this->db->truncate('mytable'); 
// 生成:
// TRUNCATE mytable
ログイン後にコピー

说明: 如果 TRUNCATE 命令不可用,truncate() 将会以 “DELETE FROM table” 的方式执行。

链式方法

链式方法允许你以连接多个函数的方式简化你的语法。考虑一下这个范例:

[code]$this->db->select('title')->from('mytable')->where('id', $id)->limit(10, 20);
$query = $this->db->get();
ログイン後にコピー

 以上就是CodeIgniter学习笔记 Item5--CI中的AR的内容,更多相关内容请关注PHP中文网(www.php.cn)!


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

XREAL 創設者 Xu Chi 氏: Apple は誰もが空間コンピューティングの未来を見れるようにしており、私たちは誰もが空間コンピューティングの現在を見てもらえるよう懸命に取り組んでいます。 XREAL 創設者 Xu Chi 氏: Apple は誰もが空間コンピューティングの未来を見れるようにしており、私たちは誰もが空間コンピューティングの現在を見てもらえるよう懸命に取り組んでいます。 Jun 02, 2024 pm 07:55 PM

XREAL は空間コンピューティング新製品発表カンファレンスで新製品 XREALBeamPro を発表しました。価格は 1,299 元からです。公式の紹介によると、XREALBeamProは2Dアプリケーションを3D空間に段階的にリリースするコンピューティング端末であり、XREALARグラスを備えており、「完全なコンシューマーグレードのAR空間コンピューティングシステム」を形成し、携帯電話からのユーザーの移行コストを最小限に抑えます。側。 XREALBeamProはデザイン的にはスマートフォンに似ていますが、携帯電話製品ではなく、タッチディスプレイを搭載した空間コンピューティング端末です。正式には「PhoneのようなAR空間コンピューティング端末」と位置付けられている。記者会見で、XREAL 創設者兼 CEO の Xu Chi 氏は、BeamPro の機能に対する熱意を表明しました。

CodeIgniter でカスタムミドルウェアを実装する方法 CodeIgniter でカスタムミドルウェアを実装する方法 Jul 29, 2023 am 10:53 AM

CodeIgniter でカスタム ミドルウェアを実装する方法 はじめに: 最新の Web 開発では、ミドルウェアがアプリケーションで重要な役割を果たします。これらは、リクエストがコントローラーに到達する前または後に、共有処理ロジックを実行するために使用できます。 CodeIgniter は、人気のある PHP フレームワークとして、ミドルウェアの使用もサポートしています。この記事では、CodeIgniter でカスタム ミドルウェアを実装する方法を紹介し、簡単なコード例を示します。ミドルウェアの概要: ミドルウェアは一種のリクエストです

PHP を使用して AR/VR アプリケーションを構築する方法 PHP を使用して AR/VR アプリケーションを構築する方法 Jun 11, 2023 pm 07:22 PM

AR (拡張現実) と VR (仮想現実) の発展により、これら 2 つのテクノロジーはイノベーションとエクスペリエンスの重要な部分になりました。ネットワーク プログラミング言語としての PHP の人気により、PHP は AR/VR アプリケーションの開発に適した選択肢になりました。この記事では、PHP を使用して AR/VR アプリケーションを構築する方法を紹介します。 1. AR および VR テクノロジーを理解する AR/VR アプリケーションの作成を開始する前に、さまざまなテクノロジーとライブラリを理解する必要があります。 AR テクノロジーにより、仮想オブジェクトや情報が現実世界の環境と対話できるようになります。 V

Microsoft、広範囲の主光線角度操作にマイクロレンズアレイを使用した AR/VR 特許を検討 Microsoft、広範囲の主光線角度操作にマイクロレンズアレイを使用した AR/VR 特許を検討 Sep 30, 2023 pm 09:29 PM

(Nweon 2023 年 9 月 26 日) Microsoft は、MicroLED には小型、軽量、高輝度、高実装密度という特性があり、高解像度、小型、軽量を必要とするヘッドマウント デバイスに特に適している可能性があると考えています。 .モニターです。マイクロソフトは、「パネルディスプレイに広範囲の主光線角度操作を提供するマイクロレンズ」というタイトルの特許出願で、パネルディスプレイに広範囲の主光線角度操作を提供するマイクロレンズと、マイクロレンズアレイで構成されたディスプレイシステムを紹介した。ここで、アレイ内の各マイクロレンズは、パネルディスプレイのそれぞれのピクセルに対応する。マイクロレンズは、次のように構成されています。

CodeIgniter ミドルウェア: アプリケーションの応答性とページのレンダリングを高速化します。 CodeIgniter ミドルウェア: アプリケーションの応答性とページのレンダリングを高速化します。 Jul 28, 2023 pm 06:51 PM

CodeIgniter ミドルウェア: アプリケーションの応答性とページ レンダリングの高速化 概要: Web アプリケーションの複雑さと対話性が増大し続ける中、開発者はアプリケーションのパフォーマンスと応答性を向上させるために、より効率的でスケーラブルなソリューションを使用する必要があります。 CodeIgniter (CI) は、多くの便利な機能を提供する軽量の PHP ベースのフレームワークであり、その 1 つがミドルウェアです。ミドルウェアは、リクエストがコントローラーに到達する前または後に実行される一連のタスクです。この記事では使い方を紹介します

Mojie Technology が CES で初めてデビューし、AR イノベーションのトレンドをリードします。 Mojie Technology が CES で初めてデビューし、AR イノベーションのトレンドをリードします。 Jan 14, 2024 pm 09:06 PM

1月9日から12日まで、CES、家電製品の「Spring Festival Gala」には4,000社以上の出展者が集まった。消費者向け AR 分野の革新的な企業として、Mojie Technology は CES に初めて参加し、コアデバイス、完全なマシンソリューション、カスタマイズされたサービスにおける中国の AR 企業の強力な強みを十分に実証しました。 Mojieブースでは、両眼用樹脂回折光導波路+MicroLEDを用いたARグラスを展示し、多くの来場者が興味を持ち、試着や機能体験を行っていました。この AR メガネには多くの実用的な機能が備わっています。まず、着用者はメガネのレンズを通してテキストの内容をリアルタイムで見ることができるため、読書がより便利になります。次に、メガネにはマイクが内蔵されており、音声情報を収集し、即時翻訳機能を通じて指定した言語のテキストに変換できます。

CodeIgniter フレームワークでデータベース クエリ ビルダー (Query Builder) を使用する方法 CodeIgniter フレームワークでデータベース クエリ ビルダー (Query Builder) を使用する方法 Jul 28, 2023 pm 11:13 PM

CodeIgniter フレームワークでデータベース クエリ ビルダー (QueryBuilder) を使用する方法の紹介: CodeIgniter は、開発者が Web アプリケーション開発を容易にするための強力なツールとライブラリを多数提供する軽量の PHP フレームワークです。最も印象的な機能の 1 つは、データベース クエリ ビルダー (QueryBuilder) です。これは、データベース クエリ ステートメントを構築および実行するための簡潔かつ強力な方法を提供します。この記事ではCoの使い方を紹介します。

NTT QONOQデバイス、スマートフォン用MirzaワイヤレスXRグラスを発表 NTT QONOQデバイス、スマートフォン用MirzaワイヤレスXRグラスを発表 Sep 09, 2024 pm 06:30 PM

NTT QONOQ Devices は、ユーザーがコードを取り回す必要から解放される、スマートフォン用の Mirza ワイヤレス XR メガネを発表しました。このメガネは、ポケモン Go などの現実世界の空間に仮想 AR コンテンツを表示したり、大きな仮想ディスプレイに携帯電話のコンテンツを表示したりできます。

See all articles