虚拟列和存储列
基本上有两种类型的计算列:virtual和stored。两者之间的主要区别是 virtual 每次用户运行查询时都会计算,但它不占用任何空间,但是,存储的数据需要一些空间,但每次行获取时都会更新插入或更新。简而言之:虚拟“更小”但“更慢”,存储“更大”但更快。
让我们看看一些 SQL,如何创建计算列:
drop table if exists users;
create table users (
id int auto_increment primary key,
first_name varchar(50) not null,
last_name varchar(50) not null,
salary int(10) not null,
name varchar(101) as (concat(first_name, ' ', last_name)),
insurance int(10) as (salary * 0.1) stored
如我们所见,我们可以根据行中的其他列生成列。在某些情况下,这可能非常方便,特别是如果我们想让这些计算自动化。
迁移模式中的计算列
现在,让我们看看如何在 Laravel 迁移中添加计算列。
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->integer('price');
$table->integer('tax')->virtualAs('price * 0.27')->nullable();
$table->integer('discount')->storedAs('price - 100')->nullable();
请注意,Laravel 8.x 支持 SQLite 的计算列。
这里的好处是,在我们的迁移中创建计算列真的很容易。这也意味着我们可以轻松地将这些附加到我们的模型中,而无需将计算属性添加到模型本身。
此外,重要的是我们可以索引计算列。因此,它也可以提高性能。
在某些情况下,使用生成的列是一种很好的方法。如果你想使用虚拟或存储方式,这取决于你和你的情况,但它们都提供了很好的功能,并且有可能使框架本身的代码更小更清晰
MySQL 和 SQLite(从 3.31.0 版开始)支持生成的列定义。让我们看看如何在我们的数据库模式中使用计算列,以及在什么情况下我们应该将它们添加到我们的迁移中。 基本上有两种类型的计算列:virtual和stored。两者之间的主要区别是 virtual 每次用户运行查询时都会计算,但它不占用任何空间,但是,存储的数据需要一些空间,但每次行获取时都会更新插入或更新。简而言之:虚拟“更小”但“更慢”,存储“更大”但更快。让我们看看一些 SQL,如何创建计算列:如我们所见,我们可以根据行中的其他
关于Laravel
Laravel是一个具有表达力,优雅语法的Web应用程序框架。 我们认为,发展必须是一种令人愉快的,富有创造力的经历,才能真正实现。 Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的痛苦,例如:
用于和存储的多个后端。
富有表现力,直观的 。
数据库不可知。
Laravel易于访问,功能强大,并提供大型,强大的应用程序所需的工具。
学习Laravel
Laravel拥有所有现代Web应用程序框架中最广泛,最全面的和视频教程库,因此轻而易举地开始使用该框架。
如果您不想读书,可以使用帮助。 Laracasts包含1500多个视频教程,涉及各种主题,包括Laravel,现代PHP,单元测试和JavaScript。 深入我们全面的视频库,提高您的技能。
Laravel赞助商
我们要感谢以下赞助商为Laravel开发
2. 配置 Redis
在 Laravel 中配置 Redis 需要在 `config/database.php` 文件中添加 Redis 的连接信息。可以参考以下示例:
```php
'redis' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
3. 使用 Redis 缓存
在 Laravel 中使用 Redis 缓存可以使用 `Cache` Facade。可以参考以下示例:
```php
use Illuminate\Support\Facades\Cache;
// 缓存数据
Cache::put('key', 'value', $minutes);
// 获取缓存数据
$value = Cache::get('key');
// 删除缓存数据
Cache::forget('key');
4. 使用 Redis 做 Session 存储
在 Laravel 中使用 Redis 做 Session 存储也很简单,只需要在 `config/session.php` 文件中修改 `driver` 为 `redis`,并配置 Redis 连接信息即可。可以参考以下示例:
```php
'driver' => env('SESSION_DRIVER', 'file'),
'connection' => env('SESSION_CONNECTION', 'default'),
'table' => 'sessions',
'store' => env('SESSION_STORE', null),
'lottery' => [2, 100],
'lifetime' => 120,
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
'path' => '/',
'domain' => env('SESSION_DOMAIN', null),
'secure' => env('SESSION_SECURE_COOKIE'),
'http_only' => true,
'same_site' => 'lax',
以上就是一个简单的 Laravel 使用 Redis 的示例。