ホームページ  >  記事  >  バックエンド開発  >  thinkphp を実装してネイティブ SQL ステートメントを実行する方法

thinkphp を実装してネイティブ SQL ステートメントを実行する方法

黄舟
黄舟オリジナル
2017-10-26 09:29:471679ブラウズ

thinkphp でネイティブ SQL ステートメントを実行するにはどうすればよいですか?


$Model = new Model();//或者 $Model = D(); 或者 $Model = M();
$sql = "select * from `order`";
$voList = $Model->query($sql);

Model のメソッドを継承するには、空の新しいモデルが必要です。

query はクエリ関数、execute は追加、削除、および変更関数です

属性値のクエリと読み取りの例:


$sql = "select * from goods";
$Model = M();
$result = $Model->query($sql);
foreach ($result as $k=>$val){
$goods_id = $val["goods_id"];
}

tP のモデルは、クエリとクエリの両方を提供するネイティブ SQL 操作をサポートできます。ネイティブ SQL が 2 つのメソッドを区別するのはなぜですか? 理由は 2 つあります:

1. 異なる戻り値の型

がクエリ に使用され、 は select または findall と同じデータセット を返します。したがって、テンプレート内の volist タグを直接使用してクエリのクエリ結果を出力できます

execute は書き込み操作に使用されます影響を受けるレコードのステータスまたは数を返します

2。統計は統計の便宜のために必要です

現在のデータの読み取りと書き込みの数によって、データベースの読み取りと書き込みの操作 (クエリと実行に対応) が分離されます

ネイティブ SQL を使用するのは非常に簡単です。任意のモデルをインスタンス化する必要さえあります。例:


$Model = new Model(); // 实例化一个空模型

以下のメソッドは同等です


$Model = D();// 或者 $Model = M();
// 下面执行原生SQL操作
$Model->query('select * from think_user where status=1');
$Model->execute('update think_user set status=1 where id=1');

特定のモデルをインスタンス化しても、影響を受けることなくネイティブ SQL 操作を実行できます。例:

$User = D('User');
$User->query('select * from think_user where status=1');
$User->execute('update think_user set status=1 where id=1');

この場合、SQL ステートメントの記述方法を簡素化できます。例:

$User->query('select * from __TABLE__ where status=1');
$User->execute('update __TABLE__ set status=1 where id=1');

システムは、

__TABLE__

を現在のモデルに対応するデータ テーブルの名前に自動的に置き換えます。実際のデータテーブルはモデルによって決まります。 一般的に言えば、

私たちは皆、ORM や CURD では実装が難しい一部の操作を実装するためにネイティブ SQL 操作を使用します

さらに、 SQL が複雑でない場合、ネイティブ SQL の効率とネイティブ SQL の効率の違いが生じます。 TP 自体のコヒーレントな操作は最小限です。ORM の実装も非常に効率的です。

以上がthinkphp を実装してネイティブ SQL ステートメントを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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