虚拟列和存储列

基本上有两种类型的计算列: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 的示例。