PHP框架之Laravel框架教程:3. 数据库操作(简要)

发布于:2025-07-28 ⋅ 阅读:(12) ⋅ 点赞:(0)

3. 数据库操作(简要)

配置

数据库的配置文件在 config/database.php 文件中,你可以在这个文件中定义所有的数据库连接配置,并指定默认的数据库连接。这个文件中提供了大部分 Laravel 能够支持的数据库配置示例。

'mysql' => [
    'driver' => 'mysql',
    'url' => env('DB_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'laravel'),
    'username' => env('DB_USERNAME', 'root'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => env('DB_CHARSET', 'utf8mb4'),
    'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
    // 用于设置数据库表前缀。它从环境变量中获取DB_PREFIX的值,如果环境变量未设置则使用空字符串作为默认值
    'prefix' => env('DB_PREFIX', ''), 
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],

.env部分:

DB_CONNECTION=mysql
 DB_HOST=127.0.0.1
 DB_PORT=3306
 DB_DATABASE=laravel
 DB_USERNAME=root
 DB_PASSWORD=123456
 DB_PREFIX=laravel_

查询
  • 支持执行原生 SQL 查询
  • 查询构建器

等等 这些不做演示了,再官网查看下即可

模型、Eloquent ORM简单介绍

如果你数据库还没有表。在 Laravel 中,你可以通过 模型(Model)结合迁移(Migration) 来创建数据库表

下面是一个完整的示例,演示如何用 Laravel 模型 + 迁移 创建一个“博客文章(Blog Article)”的表,并实现模型逻辑,便于你插入、查询数据。

🧱 目标:创建一个博客文章表 articles,包含以下字段:
字段名 类型 说明
id bigint 主键
title string 文章标题
content text 正文内容
author string 作者名称
is_published boolean 是否已发布
published_at datetime 发布时间(可空)
created_at timestamp 创建时间
updated_at timestamp 更新时间
✅ 第一步:创建模型和迁移
bash

php artisan make:model Article -m

这个命令会生成:

  • 模型文件:app/Models/Article.php
  • 迁移文件:database/migrations/xxxx_xx_xx_create_articles_table.php

✅ 第二步:定义迁移内容

编辑生成的迁移文件:

php

// database/migrations/xxxx_xx_xx_create_articles_table.php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration {
    public function up(): void
    {
        Schema::create('articles', function (Blueprint $table) {
            $table->id(); // 主键
            $table->string('title'); // 标题
            $table->text('content'); // 正文
            $table->string('author'); // 作者
            $table->boolean('is_published')->default(false); // 是否发布
            $table->timestamp('published_at')->nullable(); // 发布时间
            $table->timestamps(); // created_at 和 updated_at
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('articles');
    }
};

✅ 第三步:执行迁移
bash

php artisan migrate

成功后数据库会新增一张 articles 表,结构如下:

bash

mysql> DESC articles;

✅ 第四步:配置模型 Article

编辑 app/Models/Article.php

php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    // 可批量赋值字段
    protected $fillable = [
        'title',
        'content',
        'author',
        'is_published',
        'published_at',
    ];
}
$fillable` 是为了支持批量创建,例如:`Article::create([...])

✅ 第五步:使用模型插入数据(示例)

在控制器或 Tinker 中插入数据:

php

// 示例1:插入一篇文章
use App\Models\Article;

Article::create([
    'title' => 'Laravel 入门指南',
    'content' => '这是内容正文...',
    'author' => '涛哥',
    'is_published' => true,
    'published_at' => now(),
]);

✅ 第六步:查询数据(示例)
php

// 查询所有已发布的文章
$publishedArticles = Article::where('is_published', true)->get();

// 查询某一篇文章
$article = Article::find(1);
echo $article->title;

✅ 可选扩展:控制器中使用

你可以通过 Artisan 创建控制器:

bash

php artisan make:controller ArticleController --resource

然后在 ArticleController 中添加逻辑,实现增删改查。

Eloquent ORM 还有很多很多内容,官网查询看下即可


网站公告

今日签到

点亮在社区的每一天
去签到