Maison développement back-end tutoriel php Comment Laravel exploite-t-il la base de données ? Trois façons d'exploiter la base de données Laravel (code)

Comment Laravel exploite-t-il la base de données ? Trois façons d'exploiter la base de données Laravel (code)

Jul 25, 2018 pm 05:45 PM

Laravel est un framework de développement Web PHP (PHP Web Framework). Il peut vous libérer des codes désordonnés ; il peut vous aider à créer une application réseau parfaite, et chaque ligne de code peut être concise et expressive. Alors, comment le framework Laravel exploite-t-il la base de données ? Veuillez jeter un œil au contenu spécifique.

Laravel propose 3 façons d'exploiter la base de données : façade de base de données (méthode originale), générateur de requêtes et ORM Eloquent.

Le fichier de configuration de la base de données se trouve dans database.php dans le répertoire config. Ouvrez ce fichier et recherchez l'élément de configuration mysql.


Il y a un environnement ici, qui appelle en fait laravel The .env dans le répertoire racine, ce fichier stocke les informations de configuration de la base de données Laravel. Ouvrez-le. Modifiez-le simplement avec les informations de la base de données du projet.


Veuillez créer vous-même une base de données, qui doit contenir vipinfo tableau et insérez quelques données pour une utilisation facile ci-dessous. La structure du tableau est la suivante.

Comme son nom l'indique : cette table est une table d'adhésion, avec l'identifiant du membre (clé primaire), le nom du membre, et le type de membre. Points de membre et autres champs.

1. Façade de base de données pour les opérations de base de données

Dans app->Http->Contrôleurs Créez un nouveau contrôleur Student dans le répertoire StudentController.php. Le code StudentController.php est le suivant :

<?php 
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;class StudentController extends Controller {
 
}
Copier après la connexion

1. requête de base de données laravel

Ajoutez une méthode test1 dans le contrôleur Student La requête utilise la méthode statique select() de la classe DB, et les paramètres sont natifs. L'instruction SQL renvoie un tableau à deux dimensions. dd() est une méthode fournie par laravel, qui permet d'afficher un tableau sous la forme d'une arborescence de nœuds. Le code spécifique est le suivant :

public function test1()
{
    $student=DB::select("select * from vipinfo");    //返回一个二维数组  
    $student    var_dump($student);        //以节点树的形式输出结果    
    dd($student);
}
Copier après la connexion
Copier après la connexion

Configuration du routage : Route::get('test1',['uses' => 'StudentController@test1']);

Accès URL : http://localhost/laravel/public/index.php/ test1, imprimera le résultat.

2. Nouvelle opération

La nouvelle méthode statique insert() de la classe DB est utilisée. Le premier paramètre est l'instruction SQL et le deuxième paramètre est un tableau dans lequel sont placées les données à insérer. . ici? Il s'agit d'un espace réservé qui empêche l'injection SQL via la couche d'interface de base de données pdo. Ce qui est renvoyé est le résultat de l'exécution. Renvoie vrai si l'insertion est réussie, sinon faux.

public function test1()
{
    $student=DB::select("select * from vipinfo");    //返回一个二维数组  
    $student    var_dump($student);        //以节点树的形式输出结果    
    dd($student);
}
Copier après la connexion
Copier après la connexion

3. 🎜>

La mise à jour utilise la méthode statique update() de la classe DB Le premier paramètre est l'instruction SQL et le deuxième paramètre est un tableau. Le tableau Les éléments correspondent aux points d'interrogation dans l'instruction SQL. Renvoie vrai si la mise à jour réussit.

    $bool=DB::update(&#39;update vipinfo set vip_fenshu= ? where vip_ID= ? &#39;,[700,5]);
    var_dump($bool);  //更新成功返回true
Copier après la connexion

4. Opération de suppression

删除使用的是DB类的静态方法delete(),第一个参数是sql语句,第二个参数是一个数组,数组里的元素分别对应sql语句里的问号。返回的是删除的行数。

    $num=DB::delete(&#39;delete from vipinfo where vip_ID= ?&#39;,[5]);
    echo $num;
Copier après la connexion

二、数据库操作之查询构造器

laravel查询构造器提供了方便流畅的接口,用来建立及执行数据库查找语法。使用了pdo参数绑定,使应用程序免于sql注入,因此传入的参数不需要额外转义特殊字符。基本上可以满足所有的数据库操作,而且在所有支持的数据库系统上都可以执行。

1.使用查询构造器实现增删改查

同样在Student控制器里测试以下代码:

(1)新增

    $bool=DB::table("vipinfo")->insert([&#39;vip_ID&#39;=>6,&#39;vip_name&#39;=>&#39;zls&#39;,&#39;vip_type&#39;=>"出行",&#39;vip_fenshu&#39;=>800]);
    echo $bool; //返回bool值
    //如果想得到新增的id,则使用insertGetId方法
    $id=DB::table("vipinfo")->insertGetId([&#39;vip_ID&#39;=>5,&#39;vip_name&#39;=>&#39;wyp&#39;,&#39;vip_type&#39;=>"出行",&#39;vip_fenshu&#39;=>800]);
    echo $id;
    //插入多条数据
    $bool=DB::table("vipinfo")->insert([
    [&#39;vip_ID&#39;=>5,&#39;vip_name&#39;=>&#39;wyp&#39;,&#39;vip_type&#39;=>"出行",&#39;vip_fenshu&#39;=>800],
    [&#39;vip_ID&#39;=>6,&#39;vip_name&#39;=>&#39;zls&#39;,&#39;vip_type&#39;=>"出行",&#39;vip_fenshu&#39;=>800],
    ]);
    echo $bool; //返回bool值
Copier après la connexion

(2)修改

$bool=DB::table("vipinfo")->where(&#39;vip_ID&#39;,6)->update([&#39;vip_fenshu&#39;=>500]);
echo $bool;
//自增
$bool=DB::table("vipinfo")->where(&#39;vip_ID&#39;,6)->increment("vip_fenshu");//自增1
$bool=DB::table("vipinfo")->where(&#39;vip_ID&#39;,6)->increment("vip_fenshu",3);//自增3
echo $bool;
//自减
$bool=DB::table("vipinfo")->where(&#39;vip_ID&#39;,6)->decrement("vip_fenshu");//自1
$bool=DB::table("vipinfo")->where(&#39;vip_ID&#39;,6)->decrement("vip_fenshu",3);//自增3
echo $bool;
//自增时再修改其他字段
$bool=DB::table("vipinfo")->where(&#39;vip_ID&#39;,6)->increment("vip_fenshu",3,[&#39;vip_name&#39;=>&#39;dbdibi&#39;]);//自增3
Copier après la connexion

(3)删除

$num=DB::table("vipinfo")->where(&#39;vip_ID&#39;,6)->delete();//删除1条
$num=DB::table("vipinfo")->where(&#39;vip_ID&#39;,&#39;>&#39;,4)->delete();//删除多条
echo $num;  //删除的行数
$num=DB::table("vipinfo")->truncate();//删除整表,不能恢复,谨慎使用
Copier après la connexion

(4)查询

//get()返回多条数据
$student=DB::table("vipinfo")->get();
 var_dump($student);  
//first()返回1条数据
$student=DB::table("vipinfo")->first();  //结果集第一条记录
$student=DB::table("vipinfo")->orderBy(&#39;vip_ID&#39;,&#39;desc&#39;)->first();//按vip_ID倒序排序
var_dump($student);  
//where()条件查询
$student=DB::table("vipinfo")->where(&#39;vip_ID&#39;,&#39;>=&#39;,2)->get(); //一个条件   
$student=DB::table("vipinfo")->whereRaw(&#39;vip_ID> ? and vip_fenshu >= ?&#39;,[2,300])->get(); //多个条件
dd($student);
//pluck()指定字段,后面不加get
$student=DB::table("vipinfo")->pluck(&#39;vip_name&#39;);
dd($student);
//lists()指定字段,可以指定某个字段作为下标
$student=DB::table("vipinfo")->lists(&#39;vip_name&#39;,&#39;vip_ID&#39;);   //指定vip_ID为下标
dd($student);
$student=DB::table("vipinfo")->lists(&#39;vip_name&#39;);   //不指定下标,默认下标从0开始
//select()指定某个字段
$student=DB::table("vipinfo")->select(&#39;vip_name&#39;,&#39;vip_ID&#39;)->get();
dd($student);
//chunk()每次查n条
$student=DB::table("vipinfo")->chunk(2,function($students){  //每次查2条
    var_dump($students);
    if(.......) return false;  //在满足某个条件下使用return就不会再往下查了
});
Copier après la connexion

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;
Copier après la connexion

四、数据库操作之 - 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= &#39;vipinfo&#39;;
//指定主键
protected $primaryKey= &#39;vip_ID&#39;;
}
Copier après la connexion

在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[&#39;attributes&#39;]);//查询构造器的使用,省略了指定表名
$student=Student::get();  
var_dump($student);
}
Copier après la connexion

2 . 新增数据、自定义时间戳、批量赋值

(1)使用save方法新增

laravel会默认维护created_at,updated_at 两个字段,这两个字段都是存储时间戳,整型11位的,因此使用时需要在数据库添加这两个字段。如果不需要这个功能,只需要在模型里加一个属性:public $timestamps=false; 以及一个方法,可以将当前时间戳存到数据库

    protected function getDateFormat(){    
    return time();
    }
Copier après la connexion

这样就不需要那两个字段了。

控制器里写:

    $student=new Student();    //设定数据
    $student->vip_name=&#39;xiaoming&#39;;
    $student->vip_type=&#39;出行&#39;;
    $student->vip_fenshu=900;
    $bool=$student->save(); //保存
    echo $bool;
Copier après la connexion

从数据库里取得某条记录的时间戳时,默认取得的是按日期格式化好的时间戳,如果想取得原本的时间戳,则在模型里增加asDateTime方法。

    protected function asDateTime($val){    
    return $val;
    }
Copier après la connexion

(2)使用create方法新增时,需要在模型里增加:

protected $fillable=[&#39;vip_name&#39;,&#39;vip_fenshu&#39;,&#39;vip_type&#39;];   //允许批量赋值的字段
Copier après la connexion

控制器里写:

Student::create([&#39;vip_name&#39;=>&#39;mmm&#39;,&#39;vip_fenshu&#39;=>999,&#39;vip_type&#39;=>&#39;出行&#39;]);
Copier après la connexion

这样即可新增成功!

(3)firstOrCreate()以属性查找记录,若没有则新增

    $student=Student::firstOrCreate([&#39;vip_name&#39;=>&#39;mmm&#39;]);
    echo $student;
Copier après la connexion

(4)firstOrNew()以属性查找记录,若没有则会创建新的实例。若需要保存,则自己调用save方法()

    $student=Student::firstOrNew([&#39;vip_name&#39;=>&#39;mmm&#39;]);
    $student->save();
    echo $student;
Copier après la connexion

3. 修改数据

    //通过模型更新数据
    $student=Student::find(2);
    $student->vip_fenshu=10000;
    $student->save(); //返回bool值
    //通过查询构造器更新
    $num=Student::where(&#39;vip_ID&#39;,&#39;>&#39;,2)->update([&#39;vip_fenshu&#39;=>2000]);
    echo $num; //返回更新的行数
Copier après la connexion

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; //返回删除的行数
Copier après la connexion

 相关推荐:

Laravel框架数据库CURD操作、连贯操作使用方法

Laravel教程之基础入门和如何操作数据库

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Expliquez le concept de liaison statique tardive en PHP. Expliquez le concept de liaison statique tardive en PHP. Mar 21, 2025 pm 01:33 PM

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

Caractéristiques de sécurité du cadre: protection contre les vulnérabilités. Caractéristiques de sécurité du cadre: protection contre les vulnérabilités. Mar 28, 2025 pm 05:11 PM

L'article traite des fonctionnalités de sécurité essentielles dans les cadres pour se protéger contre les vulnérabilités, notamment la validation des entrées, l'authentification et les mises à jour régulières.

Comment envoyer une demande post contenant des données JSON à l'aide de la bibliothèque Curl de PHP? Comment envoyer une demande post contenant des données JSON à l'aide de la bibliothèque Curl de PHP? Apr 01, 2025 pm 03:12 PM

Envoyant des données JSON à l'aide de la bibliothèque Curl de PHP dans le développement de PHP, il est souvent nécessaire d'interagir avec les API externes. L'une des façons courantes consiste à utiliser la bibliothèque Curl pour envoyer le post� ...

Décrivez les principes solides et comment ils s'appliquent au développement de PHP. Décrivez les principes solides et comment ils s'appliquent au développement de PHP. Apr 03, 2025 am 12:04 AM

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées. Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées. Mar 28, 2025 pm 05:12 PM

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.

Comment fonctionne le détournement de session et comment pouvez-vous l'atténuer en PHP? Comment fonctionne le détournement de session et comment pouvez-vous l'atténuer en PHP? Apr 06, 2025 am 12:02 AM

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

See all articles