当前位置: 首页 > 知识库问答 >
问题:

Laravel多对一同一表迁移

楚翰
2023-03-14

我有这个迁移代码

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

class CreateAvatarsTable extends Migration
{

    public function up()
    {
        Schema::create('avatars', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name', 100)->nullable();
            $table->string('filename', 255)->nullable();
            $table->text('detail')->nullable();
            $table->text('pos_x')->nullable();
            $table->text('pos_y')->nullable();

            $table->integer('avatars_id')->nullable();
              $table->foreign('avatars_id')->references('id')->on('avatars')->onUpdate('cascade')->onDelete('cascade');

            $table->softDeletes();
            $table->timestamps();
        });
    }


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

当我运行生成迁移的代码时

php artisan migrate:refresh

我得到了这个结果:

[照明\Database\QueryException]SQLSTATE[42000]:语法错误或访问冲突:1103不正确的表名"(SQL:更改表头像添加con straintavatars_avatars_id_foreign外键(avatars_id)引用"(id)删除级联)

[条令\DBAL\Driver\PDOException]SQLSTATE[42000]:语法错误或访问冲突:1103不正确的表名“”

[PDOException]SQLSTATE[42000]:语法错误或访问冲突:1103不正确的表名“”

共有3个答案

柳胡媚
2023-03-14

您正试图在尚不存在的表上设置引用;按以下方式尝试:

public function up() {
  Schema::create('avatars', function(Blueprint $table) {
    $table - > increments('id');
    $table - > string('name', 100) - > nullable();
    $table - > string('filename', 255) - > nullable();
    $table - > text('detail') - > nullable();
    $table - > text('pos_x') - > nullable();
    $table - > text('pos_y') - > nullable();
    $table - > integer('avatars_id') - > nullable();
    $table - > softDeletes();
    $table - > timestamps();
  })

  Schema::table('avatars', function($table) {
    $table - > foreign('avatars_id') - > references('id') - > on('avatars') - > onUpdate('cascade') - > onDelete('cascade');
  });

}
江敏学
2023-03-14

字段id使用无符号整数数据类型

$table->unsignedInteger('avatars_id')->nullable();
梅庆
2023-03-14

更改以下行

$table->integer('avatars_id')->nullable();

$table->integer('avatars_id')->unsigned();

因为外键id应该是无符号整数

 类似资料:
  • 这是项目迁移 这是时间表 这样用户就可以迁移了 这是我的项目模型 这是我的时间表模型: 这是我的用户模型 现在,我从项目返回我的查询 这是可以的,但user_id用户在timesheets.user_id我不能得到它的时间表,并得到它 此控制器按时间表中的项目id返回项目和时间表,但时间表中的用户id我不知道如何将其输入系统

  • 我正在尝试编写一个简单的应用程序,其中包含一个跟踪每个用户支付的款项的表和一个包含每个用户支付的总金额(所有付款的总和)的第二个表。目前,两个表都有相同的字段(firstName、lastName、金额),我已经将它们从同一个Java类映射到多个表,我无法将该类映射到多个表。对此有什么简单的解决方案吗?

  • 问题内容: 这是情况:- 我有一个名为“用户”的表。由于所需的大多数数据是相同的,因此它包含学生和导师的用户数据。 完成该系统后,现在我被告知客户希望能够将学生分配给导师。 是否可以通过链接表在一个表内创建一对多关系的合法/干净方法? 我已经尝试过考虑这一点,但是我想出的任何解决方案似乎都是混乱的。 我将不胜感激。 谢谢 菲尔 问题答案: 您是否尝试过以下方法? 例如,创建一个新表(如果需要,请选

  • 比如说,我有多个迁移文件更新单个表。 例如 ... 来自不同团队成员的回购协议。每个都在调整表中的某些内容,例如添加一列。 当我试图: 我得到一个错误: 一个人应该如何处理上述情况? 编辑 下面是代码: 2016_03_20_072730_create_tasks_table.php: 2016_03_20_075467_create_tasks_table.php:

  • 问题内容: 我有一个班级用户。用户可以与许多其他用户成为朋友。这种关系是相互的。如果A是B的朋友,那么B是A的朋友。我也希望每个关系都存储其他数据,例如两个用户成为朋友的日期。因此,这是同一表上具有多列的多对多关系。我知道应该创建一个中产阶级友谊(包含两个用户ID和日期列)。但是我在将其与Hibernate映射时做得不够。使我停滞不前的是映射到了同一张表。如果多对多关系是在两个不同的表之间,则可以

  • 我使用迁移创建一个表。但是当我想使用不同的迁移创建第二个时,我做不到。在终端给这个消息: 未找到基表或视图:1146表'hrm.timelogs'不存在 laravel日志如下: 照亮\数据库\迁移\迁移器- 照亮\数据库\迁移\迁移器- 照明\控制台\命令- 对象(Symfony\Component\Console\Output\ConsoleOutput)) 照明\控制台\命令- Symfon