【问题标题】:Laravel 5.5 - How to create a `negative_id` column value based on `id` value?Laravel 5.5 - 如何根据 `id` 值创建`negative_id` 列值?
【发布时间】:2018-10-07 14:01:17
【问题描述】:

我正在做一个测试,但不确定如何使用 laravel 迁移文件进行测试。简而言之,有自动递增的id 字段(始终为正整数)。但我还想要一个negative_id 字段,它是id * -1 的值,并且在将id 插入数据库时​​会自动同步插入。因此,当添加第一个用户时,id 会自动添加为1,因此negative_id 应添加为该行的-1,因为1 * -1 = -1。该表应如下所示:

| id | negative_id 
------------------
| 1  | -1                   
| 2  | -2                   
| 3  | -3  

以下是我当前的迁移文件:

<?php

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

class CreateUsersTable extends Migration {
    public function up(){
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('negative_id'); // how to make this id*-1 value
        });
    }

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

知道如何从迁移文件中完成此操作吗?

【问题讨论】:

  • 我认为,您可以尝试触发器。(如果我们谈论数据库级别)。另一方面,您可以使用Eloquent 事件docs

标签: laravel laravel-5.5 laravel-migrations


【解决方案1】:

您可能想查看生成的列

$table->integer('negative_id')->virtualAs('id*-1');

查看this链接了解更多信息。

【讨论】:

  • 嗯...当我将其添加到迁移和迁移中时,我得到SQLSTATE[HY000]: General error: 3109 Generated column 'negative_id' cannot refer to auto-increment column.
猜你喜欢
  • 2023-02-14
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 2019-12-01
  • 1970-01-01
  • 2020-10-24
相关资源
最近更新 更多