Laravel は、PHP Web 開発フレームワーク (PHP Web フレームワーク) です。煩雑なコードから解放され、完璧なネットワーク APP を構築するのに役立ち、コードの各行を簡潔かつ表現力豊かにすることができます。では、laravel フレームワークはどのようにデータベースを操作するのでしょうか?具体的な内容をぜひご覧ください。
Laravel では、DB ファサード (独自の方法)、クエリビルダー、Eloquent ORM の 3 つのデータベース操作方法を提供しています。
#データベース設定ファイルは、config ディレクトリの database.php にあります。 このファイルを開いて、mysql の設定項目を見つけます。
#ここには env があり、実際に laravel を呼び出します。ルートディレクトリにあるこのファイルには、Laravel データベース構成情報が保存されます。それを開く。プロジェクトのデータベース情報に修正するだけです。
#名前が示すように、このテーブルはメンバーシップ テーブルであり、メンバー ID (主キー)、メンバー名、およびメンバータイプ、メンバーポイントおよびその他のフィールド。
1.
データベース操作のための DB ファサード# アプリ内->HTTP->コントローラーで新しい
Student コントローラー、StudentController.php をディレクトリに追加します。 StudentController.php コードは次のとおりです: <?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;class StudentController extends Controller {
}
Student コントローラーに test1 メソッドを追加します。クエリでは、DB クラスの静的メソッド select() とパラメーターを使用します。ネイティブ SQL ステートメントであり、2 次元配列を返します。 dd()はlaravelが提供するメソッドで、配列をノードツリー形式で表示することができます。具体的なコードは次のとおりです:
public function test1()
{
$student=DB::select("select * from vipinfo"); //返回一个二维数组
$student var_dump($student); //以节点树的形式输出结果
dd($student);
}
ルート設定:
Route::get('test1',['uses'=> ;'StudentController @test1']);
URL アクセス: http://localhost/l
test1 , は結果を出力します。 2. 新しい操作
##DB クラスの新たに使用した静的メソッド insert() を使用します。第一パラメータは SQL ステートメント、第二パラメータは配列です。挿入するデータは配列。ここ?これは、データベース インターフェイス層の PDO を介した SQL インジェクションを防ぐプレースホルダーです。返されるのは実行結果です。挿入が成功した場合は true を返し、それ以外の場合は false を返します。
public function test1()
{
$student=DB::select("select * from vipinfo"); //返回一个二维数组
$student var_dump($student); //以节点树的形式输出结果
dd($student);
}
更新には DB クラスの静的メソッド update() を使用します 第一パラメータは SQL ステートメント、第二パラメータは配列です 要素はそれぞれ対応しますSQL ステートメント内の疑問符に。更新が成功した場合は true を返します。
$bool=DB::update('update vipinfo set vip_fenshu= ? where vip_ID= ? ',[700,5]); var_dump($bool); //更新成功返回true
4. 削除操作
删除使用的是DB类的静态方法delete(),第一个参数是sql语句,第二个参数是一个数组,数组里的元素分别对应sql语句里的问号。返回的是删除的行数。
$num=DB::delete('delete from vipinfo where vip_ID= ?',[5]); echo $num;
二、数据库操作之查询构造器
laravel查询构造器提供了方便流畅的接口,用来建立及执行数据库查找语法。使用了pdo参数绑定,使应用程序免于sql注入,因此传入的参数不需要额外转义特殊字符。基本上可以满足所有的数据库操作,而且在所有支持的数据库系统上都可以执行。
1.使用查询构造器实现增删改查
同样在Student控制器里测试以下代码:
(1)新增
$bool=DB::table("vipinfo")->insert(['vip_ID'=>6,'vip_name'=>'zls','vip_type'=>"出行",'vip_fenshu'=>800]); echo $bool; //返回bool值 //如果想得到新增的id,则使用insertGetId方法 $id=DB::table("vipinfo")->insertGetId(['vip_ID'=>5,'vip_name'=>'wyp','vip_type'=>"出行",'vip_fenshu'=>800]); echo $id; //插入多条数据 $bool=DB::table("vipinfo")->insert([ ['vip_ID'=>5,'vip_name'=>'wyp','vip_type'=>"出行",'vip_fenshu'=>800], ['vip_ID'=>6,'vip_name'=>'zls','vip_type'=>"出行",'vip_fenshu'=>800], ]); echo $bool; //返回bool值
(2)修改
$bool=DB::table("vipinfo")->where('vip_ID',6)->update(['vip_fenshu'=>500]); echo $bool; //自增 $bool=DB::table("vipinfo")->where('vip_ID',6)->increment("vip_fenshu");//自增1 $bool=DB::table("vipinfo")->where('vip_ID',6)->increment("vip_fenshu",3);//自增3 echo $bool; //自减 $bool=DB::table("vipinfo")->where('vip_ID',6)->decrement("vip_fenshu");//自1 $bool=DB::table("vipinfo")->where('vip_ID',6)->decrement("vip_fenshu",3);//自增3 echo $bool; //自增时再修改其他字段 $bool=DB::table("vipinfo")->where('vip_ID',6)->increment("vip_fenshu",3,['vip_name'=>'dbdibi']);//自增3
(3)删除
$num=DB::table("vipinfo")->where('vip_ID',6)->delete();//删除1条 $num=DB::table("vipinfo")->where('vip_ID','>',4)->delete();//删除多条 echo $num; //删除的行数 $num=DB::table("vipinfo")->truncate();//删除整表,不能恢复,谨慎使用
(4)查询
//get()返回多条数据 $student=DB::table("vipinfo")->get(); var_dump($student); //first()返回1条数据 $student=DB::table("vipinfo")->first(); //结果集第一条记录 $student=DB::table("vipinfo")->orderBy('vip_ID','desc')->first();//按vip_ID倒序排序 var_dump($student); //where()条件查询 $student=DB::table("vipinfo")->where('vip_ID','>=',2)->get(); //一个条件 $student=DB::table("vipinfo")->whereRaw('vip_ID> ? and vip_fenshu >= ?',[2,300])->get(); //多个条件 dd($student); //pluck()指定字段,后面不加get $student=DB::table("vipinfo")->pluck('vip_name'); dd($student); //lists()指定字段,可以指定某个字段作为下标 $student=DB::table("vipinfo")->lists('vip_name','vip_ID'); //指定vip_ID为下标 dd($student); $student=DB::table("vipinfo")->lists('vip_name'); //不指定下标,默认下标从0开始 //select()指定某个字段 $student=DB::table("vipinfo")->select('vip_name','vip_ID')->get(); dd($student); //chunk()每次查n条 $student=DB::table("vipinfo")->chunk(2,function($students){ //每次查2条 var_dump($students); if(.......) return false; //在满足某个条件下使用return就不会再往下查了 });
2.使用聚合函数
//count()统计记录条数$nums=DB::table("vipinfo")->count(); echo $nums;//max()某个字段的最大值,同理min是最小值$max=DB::table("vipinfo")->max("vip_fenshu"); echo $max;//avg()某个字段的平均值$avg=DB::table("vipinfo")->avg("vip_fenshu"); echo $avg;//sum()某个字段的和$sum=DB::table("vipinfo")->sum("vip_fenshu"); echo $sum;
四、数据库操作之 - Eloquent ORM
1.简介、模型的建立及查询数据
简介:laravel所自带的Eloquent ORM 是一个ActiveRecord实现,用于数据库操作。每个数据表都有一个与之对应的模型,用于数据表交互。
建立模型,在app目录下建立一个Student模型,即Student.php,不需要带任何后缀。
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Student extends Model{ //指定表名 protected $table= 'vipinfo'; //指定主键 protected $primaryKey= 'vip_ID'; }
在Student控制器里增加一个test3方法,配置路由Route::get('test3',['uses'=>'StudentController@test3']);
public function test3(){// all()方法查询所有数据$studnets=Student::all(); dd($studnets);//find()查询一条,依据主键查询。findOrFail()查找不存在的记录时会抛出异常 $student=Student::find(5); //主键为5的记录 var_dump($student['attributes']);//查询构造器的使用,省略了指定表名 $student=Student::get(); var_dump($student); }
2 . 新增数据、自定义时间戳、批量赋值
(1)使用save方法新增
laravel会默认维护created_at,updated_at 两个字段,这两个字段都是存储时间戳,整型11位的,因此使用时需要在数据库添加这两个字段。如果不需要这个功能,只需要在模型里加一个属性:public $timestamps=false; 以及一个方法,可以将当前时间戳存到数据库
protected function getDateFormat(){ return time(); }
这样就不需要那两个字段了。
控制器里写:
$student=new Student(); //设定数据 $student->vip_name='xiaoming'; $student->vip_type='出行'; $student->vip_fenshu=900; $bool=$student->save(); //保存 echo $bool;
从数据库里取得某条记录的时间戳时,默认取得的是按日期格式化好的时间戳,如果想取得原本的时间戳,则在模型里增加asDateTime方法。
protected function asDateTime($val){ return $val; }
(2)使用create方法新增时,需要在模型里增加:
protected $fillable=['vip_name','vip_fenshu','vip_type']; //允许批量赋值的字段
控制器里写:
Student::create(['vip_name'=>'mmm','vip_fenshu'=>999,'vip_type'=>'出行']);
这样即可新增成功!
(3)firstOrCreate()以属性查找记录,若没有则新增
$student=Student::firstOrCreate(['vip_name'=>'mmm']); echo $student;
(4)firstOrNew()以属性查找记录,若没有则会创建新的实例。若需要保存,则自己调用save方法()
$student=Student::firstOrNew(['vip_name'=>'mmm']); $student->save(); echo $student;
3. 修改数据
//通过模型更新数据 $student=Student::find(2); $student->vip_fenshu=10000; $student->save(); //返回bool值 //通过查询构造器更新 $num=Student::where('vip_ID','>',2)->update(['vip_fenshu'=>2000]); echo $num; //返回更新的行数
4. 删除数据
//(1)通过模型删除数据 $student=Student::find(11); $student->delete(); //返回bool值 //(2)通过主键删除 $num=Student::destroy(10); //删除主键为10的一条记录 echo $num; //返回删除的行数 $num=Student::destroy(10,5); //删除多条 或者$num=Student::destroy([10,5]); echo $num; //返回删除的行数
相关推荐:
以上がLaravel はデータベースをどのように操作するのでしょうか? Laravelデータベースを操作する3つの方法(コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版
ビジュアル Web 開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。
