网站首页 > 知识剖析 正文
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 还有很多很多内容,官网查询看下即可
- 上一篇: PHP多久能学会?比java,python难还是简单呢?
- 下一篇: PHP与RESTful
猜你喜欢
- 2025-08-05 php-fpm的配置和优化
- 2025-08-05 PHP自动测试框架Top 10
- 2025-08-05 还在用phpstudy(小皮面板)?别天真了,什么才是PHP三件套?
- 2025-08-05 适用于PHP初学者的学习线路和建议
- 2025-08-05 PHP 7.0.3 正式版发布
- 2025-08-05 讲解一下php zend技术,主要原理和功能
- 2025-08-05 php使用yield进行大数据量处理
- 2025-08-05 代码没写完,哪里有脸睡觉!17 张程序员壁纸推荐
- 2025-08-05 PHP性能全面优化-值得收藏
- 2025-08-05 EMLOG让文章日期显示具体时间和星期的方法
- 08-0612 个最佳 JavaScript 动画库,让您的 Web 页面动起来
- 08-06HTML 二次函数图像动画展示
- 08-06UnoCSS 内置的动画
- 08-06炫酷的CSS3 loading加载动画,总有一款适合你
- 08-06想要开发更好的Python项目,代码质量是关键
- 08-06想要入门学好Python编程,先从这几本书开始
- 08-06甲方VS程序员精彩画面鉴赏
- 08-06后端语言性能排行,哪种语言最快,为什么?
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)