ThinkPHPにおけるデータベースCRUD操作方法棚卸(limit,page,table,order,data方法)
limitメソッドlimitメソッドもモデルクラスの一貫した操作メソッドの1つであり、主にクエリーと操作の数を指定するために使用され、特にページングクエリーで使用されることが多い.ThinkPHPのlimitメソッドは、すべてのデータベースドライバクラスと互換性があります.使用法制限結果の数は、例えば、要求を満たす10人のユーザを取得し、以下のように呼び出すことができる.
Limitメソッドは、要求を満たす3つのデータを更新するなど、書き込み操作にも使用できます.
ページングクエリー記事ページングクエリーはlimitメソッドでよく使用される場合です.たとえば、次のようにします.
クエリー記事データを表し、10行目から25のデータ(where条件とorderソートの影響にも依存する可能性がありますが、これはともかく).バージョン3.1以降でも、次のように使用できます.
ビッグデータ・テーブルの場合、limitを使用してクエリーの結果を制限するようにします.そうしないと、メモリのオーバーヘッドやパフォーマンスに大きな問題が発生します.
Pageメソッドpageメソッドもモデルの一貫した操作方法の一つであり,完全にページングクエリのために誕生した人間的な操作方法である.使用法では、limitメソッドがページングクエリに使用される場合について前述したが、pageメソッドは、ページングクエリをより人間的に行う方法であり、例えば、文章リストのページングを例にとると、limitメソッドを使用する場合、最初のページと2番目のページ(各ページに10個のデータを出力すると仮定)を次のように記述する.
拡張クラスライブラリのページングクラスPageを使用すると、各ページングのlimitパラメータを自動的に計算できますが、自分で書くには苦労します.pageメソッドで書くと簡単です.たとえば、次のようにします.
明らかなのは、pageメソッドを使用して各ページングデータの開始位置を計算する必要がなく、pageメソッドの内部で自動的に計算されます.
3.1以降、pageメソッドでは2つのパラメータの書き方もサポートされています.たとえば、次のようになります.
および
同等.Pageメソッドはlimitメソッドと組み合わせて使用することもできます.たとえば、次のようにします.
pageメソッドが1つの値しか入力されていない場合、何ページ目かを表し、limitメソッドは各ページの表示数を設定するために使用されます.つまり、上記の書き方は次のようになります.
tableメソッドtableメソッドもモデルクラスの一貫した操作メソッドの1つであり、主に操作を指定するデータテーブルに用いられる.用法一般的には、モデルを操作する際にシステムが現在対応するデータテーブルを自動的に認識できるため、tableメソッドを使用する場合は通常、操作のデータテーブルを切り替えるためである.複数のテーブルを操作します.例:
tableメソッドでデータベースを指定することもできます.たとえば、次のようにします.
tableメソッドではデータベースの接続は変更されませんので、現在接続されているユーザーが対応するデータベースとデータテーブルを操作する権限があることを確認してください.データテーブルを切り替えると、切り替えたデータテーブルのフィールドキャッシュ情報が自動的に再取得されます.複数のテーブルを操作する必要がある場合は、次のように使用できます.
mysqlとのキーワードの競合を最小限に抑えるには、配列を使用して定義することをお勧めします.たとえば、次のようにします.
orderメソッドorderメソッドは、モデルの一貫した操作メソッドの1つであり、操作の結果をソートするために使用されます.使用法
注意:一貫した操作方法には順序がなく、selectメソッドが呼び出される前に呼び出し順序を任意に変更できます.次のように、複数のフィールドのソートをサポートします.
descまたはascソートルールが指定されていない場合は、デフォルトはascです.フィールドがmysqlキーワードと競合している場合は、配列呼び出しを推奨します.たとえば、次のようにします.
dataメソッドdataメソッドもモデルクラスの一貫した操作方法の一つで、現在操作するデータオブジェクトの値を設定するために使用されていますが、この方法にはあまり慣れていないかもしれませんが、今日はどのようにdataメソッドをうまく使うかを説明します.使用法の書き込み操作では、通常、createメソッドまたは付与メソッドを使用してデータ・オブジェクトを生成し、データベースに書き込みます.たとえば、次のようにします.
または、データ・オブジェクトに直接値を割り当てます.たとえば、次のようにします.
ではdataメソッドは、操作するデータオブジェクトを直接生成します.たとえば、次のようにします.
注意:createメソッドとdataを併用してデータオブジェクトを作成する場合は、後で呼び出すメソッドが有効です.
dataメソッドは配列、オブジェクト、文字列をサポートします.オブジェクト方式は次のとおりです.
文字列の使用方法は次のとおりです.
また、addメソッドに直接データオブジェクトを入力して、データを追加することもできます.たとえば、次のようにします.
しかし、この方法ではdataパラメータは配列しか使用できません.
もちろんdataメソッドは、データの更新にも使用できます.たとえば、次のようにします.
もちろん私たちも直接このように使うことができます.
同様に、dataパラメータは配列にのみ入力できます.
saveメソッドを呼び出してデータを更新すると、現在のデータオブジェクトにプライマリ・キー値があるかどうかを自動的に判断し、ある場合は自動的に更新条件として使用されます.つまり、次の使い方は上と同等です.
読み出し操作は、書き込み操作に加えて、dataメソッドを使用して、現在のデータオブジェクトを読み出すこともできます.たとえば、次のようにします.
ThinkPHP公式ドキュメント
$User = M('User');
$User->where('status=1')->field('id,name')->limit(10)->select();
Limitメソッドは、要求を満たす3つのデータを更新するなど、書き込み操作にも使用できます.
$User = M('User');
$User->where('score=100')->limit(3)->save(array('level'=>'A'));
ページングクエリー記事ページングクエリーはlimitメソッドでよく使用される場合です.たとえば、次のようにします.
$Article = M('Article');
$Article->limit('10,25')->select();
クエリー記事データを表し、10行目から25のデータ(where条件とorderソートの影響にも依存する可能性がありますが、これはともかく).バージョン3.1以降でも、次のように使用できます.
$Article = M('Article');
$Article->limit(10,25)->select();
ビッグデータ・テーブルの場合、limitを使用してクエリーの結果を制限するようにします.そうしないと、メモリのオーバーヘッドやパフォーマンスに大きな問題が発生します.
Pageメソッドpageメソッドもモデルの一貫した操作方法の一つであり,完全にページングクエリのために誕生した人間的な操作方法である.使用法では、limitメソッドがページングクエリに使用される場合について前述したが、pageメソッドは、ページングクエリをより人間的に行う方法であり、例えば、文章リストのページングを例にとると、limitメソッドを使用する場合、最初のページと2番目のページ(各ページに10個のデータを出力すると仮定)を次のように記述する.
$Article = M('Article');
$Article->limit('0,10')->select(); //
$Article->limit('10,10')->select(); //
拡張クラスライブラリのページングクラスPageを使用すると、各ページングのlimitパラメータを自動的に計算できますが、自分で書くには苦労します.pageメソッドで書くと簡単です.たとえば、次のようにします.
$Article = M('Article');
$Article->page('1,10')->select(); //
$Article->page('2,10')->select(); //
明らかなのは、pageメソッドを使用して各ページングデータの開始位置を計算する必要がなく、pageメソッドの内部で自動的に計算されます.
3.1以降、pageメソッドでは2つのパラメータの書き方もサポートされています.たとえば、次のようになります.
$Article->page(1,10)->select();
および
$Article->page('1,10')->select();
同等.Pageメソッドはlimitメソッドと組み合わせて使用することもできます.たとえば、次のようにします.
$Article->limit(25)->page(3)->select();
pageメソッドが1つの値しか入力されていない場合、何ページ目かを表し、limitメソッドは各ページの表示数を設定するために使用されます.つまり、上記の書き方は次のようになります.
$Article->page('3,25')->select();
tableメソッドtableメソッドもモデルクラスの一貫した操作メソッドの1つであり、主に操作を指定するデータテーブルに用いられる.用法一般的には、モデルを操作する際にシステムが現在対応するデータテーブルを自動的に認識できるため、tableメソッドを使用する場合は通常、操作のデータテーブルを切り替えるためである.複数のテーブルを操作します.例:
$Model->table('think_user')->where('status>1')->select();
tableメソッドでデータベースを指定することもできます.たとえば、次のようにします.
$Model->table('db_name.think_user')->where('status>1')->select();
tableメソッドではデータベースの接続は変更されませんので、現在接続されているユーザーが対応するデータベースとデータテーブルを操作する権限があることを確認してください.データテーブルを切り替えると、切り替えたデータテーブルのフィールドキャッシュ情報が自動的に再取得されます.複数のテーブルを操作する必要がある場合は、次のように使用できます.
$Model->field('user.name,role.title')->table('think_user user,think_role role')->limit(10)->select();
mysqlとのキーワードの競合を最小限に抑えるには、配列を使用して定義することをお勧めします.たとえば、次のようにします.
$Model->field('user.name,role.title')->table(array('think_user'=>'user','think_role'=>'role'))->limit(10)->select();
orderメソッドorderメソッドは、モデルの一貫した操作メソッドの1つであり、操作の結果をソートするために使用されます.使用法
$Model->where('status=1')->order('id desc')->limit(5)->select();
注意:一貫した操作方法には順序がなく、selectメソッドが呼び出される前に呼び出し順序を任意に変更できます.次のように、複数のフィールドのソートをサポートします.
$Model->where('status=1')->order('id desc,status')->limit(5)->select();
descまたはascソートルールが指定されていない場合は、デフォルトはascです.フィールドがmysqlキーワードと競合している場合は、配列呼び出しを推奨します.たとえば、次のようにします.
$Model->where('status=1')->order(array('order','id'=>'desc'))->limit(5)->select();
dataメソッドdataメソッドもモデルクラスの一貫した操作方法の一つで、現在操作するデータオブジェクトの値を設定するために使用されていますが、この方法にはあまり慣れていないかもしれませんが、今日はどのようにdataメソッドをうまく使うかを説明します.使用法の書き込み操作では、通常、createメソッドまたは付与メソッドを使用してデータ・オブジェクトを生成し、データベースに書き込みます.たとえば、次のようにします.
$Model = D('User');
$Model->create();
//
$Model->add();
または、データ・オブジェクトに直接値を割り当てます.たとえば、次のようにします.
$Model = M('User');
$Model->name = ' ';
$Model->email = '[email protected]';
$Model->add();
ではdataメソッドは、操作するデータオブジェクトを直接生成します.たとえば、次のようにします.
$Model = M('User');
$data['name'] = ' ';
$data['email'] = '[email protected]';
$Model->data($data)->add();
注意:createメソッドとdataを併用してデータオブジェクトを作成する場合は、後で呼び出すメソッドが有効です.
dataメソッドは配列、オブジェクト、文字列をサポートします.オブジェクト方式は次のとおりです.
$Model = M('User');
$obj = new stdClass;
$obj->name = ' ';
$obj->email = '[email protected]';
$Model->data($obj)->add();
文字列の使用方法は次のとおりです.
$Model = M('User');
$data = 'name= &[email protected]';
$Model->data($data)->add();
また、addメソッドに直接データオブジェクトを入力して、データを追加することもできます.たとえば、次のようにします.
$Model = M('User');
$data['name'] = ' ';
$data['email'] = '[email protected]';
$Model->add($data);
しかし、この方法ではdataパラメータは配列しか使用できません.
もちろんdataメソッドは、データの更新にも使用できます.たとえば、次のようにします.
$Model = M('User');
$data['id'] = 8;
$data['name'] = ' ';
$data['email'] = '[email protected]';
$Model->data($data)->save();
もちろん私たちも直接このように使うことができます.
$Model = M('User');
$data['id'] = 8;
$data['name'] = ' ';
$data['email'] = '[email protected]';
$Model->save($data);
同様に、dataパラメータは配列にのみ入力できます.
saveメソッドを呼び出してデータを更新すると、現在のデータオブジェクトにプライマリ・キー値があるかどうかを自動的に判断し、ある場合は自動的に更新条件として使用されます.つまり、次の使い方は上と同等です.
$Model = M('User');
$data['name'] = ' ';
$data['email'] = '[email protected]';
$Model->data($data)->where('id=8')->save();
読み出し操作は、書き込み操作に加えて、dataメソッドを使用して、現在のデータオブジェクトを読み出すこともできます.たとえば、次のようにします.
$User = M('User');
$map['name'] = ' ';
$User->where($map)->find();
//
$data = $User->data();
ThinkPHP公式ドキュメント