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

Laravel更新关系表不工作

卜季萌
2023-03-14

问题1:无法更新关系表配置文件的记录。最后出现以下错误。

Illumb\Database\QueryException
SQLSTATE[42S22]:未找到列:“字段列表”中的1054未知列“用户id”(SQL:update用户设置用户id=132,用户更新时间
=2020-03-30 08:48:51,其中id=132)

我有两个表usersprofiles,其模式如下

Schema::create(
    'users',
    function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('username')->unique();
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password')->nullable();
        $table->enum('role', ['super', 'admin', 'manager', 'subscriber', 'user'])->default('user');
        $table->boolean('is_root')->default(FALSE);
        $table->rememberToken();
        $table->timestamps();

        $table->unique(['username', 'email'], 'users_unique_credentials');
    }
);
Schema::create('profiles', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->bigInteger('user_id')->unsigned();
    $table->string('key', 191);
    $table->longText('value')->nullable();

    $table->foreign('user_id', 'profile_uid_fk')
          ->references('id')
          ->on('users')
          ->onDelete('cascade');

    $table->unique(['user_id', 'key'], 'profile_unique_key');
});
public function profiles()
{
    return $this->hasMany(Profile::class)->orderBy('id');
}
public function user()
{
    return $this->belongsTo(User::class);
}
public function update(UserRequest $request, User $user)
{

    $user->email = $request->email;
    $user->role  = $request->role;

    if ($request->has('password')) {
        $user->password = Hash::make($request->password);
    }

    $user->save();
    $user->profile()->save($user);

}

问题2:用户id是表单中的一个隐藏字段。但是,我更愿意从控制器传递它。有什么办法吗?

array:15 [▼
  "_token" => "O3Ardvzz7QvAsYa7aUWn4dbJx1qpCsScykD1fh1S"
  "_method" => "PUT"
  "email" => "newage@test.com"
  "password" => null
  "password_confirmation" => null
  "role" => "subscriber"
  "first_name" => "John"
  "last_name" => "doe"
  "city" => "Ahmedabad"
  "mobile" => "545466555"
  "facebook" => "https://facebook.com/profile/pp"
  "twitter" => "https://twitter.com"
  "youtube" => null
  "instagram" => null
  "user_id" => "132"
]

共有2个答案

狄法
2023-03-14

可以使用Associates方法

$user-

更多信息:文档

齐建白
2023-03-14

您需要将用户控制器中的查询更改为:

$user->profile()->create($user->toArray())->save();

您还可以看到这个示例

 类似资料:
  • 我有一个问题,我无法用文档解决。 我想在两个用户之间创建一个非常简单的对话系统。 我有3个模型和表: 用户id、名称 会话 id 消息 id,user_id,conversation_id,内容 因此,一条消息属于一个用户和一个对话,但我希望对话属于多个用户。 我不知道怎么用桌子做这个。如果我在对话表中创建一个字段,我不能有多个用户。。。

  • 我有表,和透视表。表只有两个字段和。 当我添加一个问题时,它还会将相应的值插入透视表。 假设我更改表单中的问题标记并保存,它应该更新透视表的值。如何更新透视表?我是拉威尔的新手。我试过类似的东西 但在我的例子中,pivot表中并没有额外的属性 问题模型 标签模型

  • 我有2个具有1:(0或1)关系的表,例如: 表1-学生 表2-学生地址 并非每个学生都有地址(例如) 我想更新这两个表,更新学生,如果存在相对行student_address-更新也student_address。

  • 您好,当我更新或删除API中的数据时,我需要有关laravel 8多对多关系透视表的帮助。这些是我的文件信息。首先,我创建了两个表:Companies(迁移文件) 联系人(迁移文件) 在此之后,创建透视表company\u contact(迁移文件) 模型如下所示:公司模型 } 联系人模型 } 我的路线文件 我的公司控制人 } 公司存储请求 公司资源 也许有人可以帮助我在公司控制器中编写正确的st

  • 我正在学习拉威尔,有一件事我无法解决。 我有什么: 用户、帖子、评论及相应模型表 使用者php:

  • 我是Laravel5.2的新手,正在开发一个遗留系统,对雄辩有点困惑,希望有人能给我代码。 共有3个表格: 卡片类别卡片2类 卡片可以是许多类别的一部分,这些类别保存在cards2cat表中。 cards2cat表的结构如下 id(主键)图像(卡)类别 我想做的是在Cards模型中有一个方法,名为getCardsWithCategors,它返回Cards信息和category表中类别的名称。 ca