Laravel Eloquent 无法使用复合主键保存模型

2023-12-02

当定义复合主键然后在实例化模型上调用 save 时,会引发异常。

ErrorException (E_UNKNOWN) 
PDO::lastInsertId() expects parameter 1 to be string, array given

错误发生在第32行

$id = $query->getConnection()->getPdo()->lastInsertId($sequence);

这是模型的声明

class ActivityAttendance extends Eloquent {
    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'activity_attendance';

    /**
     * The primary key of the table.
     * 
     * @var string
     */
    protected $primaryKey = array('activity_id', 'username');

    /**
     * The attributes of the model.
     * 
     * @var array
     */
    protected $guarded = array('activity_id', 'username', 'guests');

    /**
     * Disabled the `update_at` field in this table.
     * 
     * @var boolean
     */
    public $timestamps = false;
}

这是在 Controller 类中创建新记录的代码。

$attendance                 = new ActivityAttendance;
$attendance->activity_id    = $activityId;
$attendance->username       = $username;
$attendance->save();

我假设这是一个数据透视表,在这种情况下,您不应该直接使用数据透视表。与任一工作Activity or Attendance使用以下方法的模型belongsToMany()更新数据透视表,sync(), attach(), detach(), etc...

如果由于某种原因这是不可能的,因为您的数据透视表还包含其他地方的键,您应该删除当前的主键,添加一个id主键列自增并添加唯一索引username, and activity_id.

你也许也可以像这样保存它......可能值得一试。

$attendance = ActivityAttendance::create(
    'activity_id' => $activityId,
    'username' => $username
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel Eloquent 无法使用复合主键保存模型 的相关文章

  • MongoDB 复合键:InvalidOperationException:{document}.Identity 不受支持

    我在水合由复合 ID 组成的类时遇到问题 该复合 ID 又具有基类 我收到一条错误消息InvalidOperationException document Identity is not supported 我试图写入数据库的类如下 pub
  • 特定文件夹的 .htaccess 例外

    这是我的 htaccess 代码 位于根文件夹中
  • updateExistingPivot() 不起作用

    我正在尝试像这样更新数据透视表 public function updatePermission id permissionId permissionValue Input get value user User find id perms
  • 使用键模式从 Laravel 4 缓存中删除?

    对于我的包 我们使用 Laravel 缓存 我们创建的每个缓存键都有前缀 所以我们得到mypackage config mypackage md5ofafilename有时我需要刷新我的包创建的所有缓存文件 问题是什么 我只知道缓存键的模式
  • 如何使用 Laravel Eloquent 返回多重关系?

    我有一张桌子叫users 每个用户都有不同的事情 country device computer category 我为上述每一个 事物 创建了一个表格 类似如下 1 United States 2 United Kingdom 3 Aus
  • 如何将 Laravel 5.4 与 Angular 4 集成

    我知道如何创造完整的拉拉维尔 5 4自己的项目 我也知道如何使用创建 SPA角4 Problem 我不知道如何将 Laravel 与 Angular 集成 另外 我想使用 Laravel 5 4 作为后端 使用 Angular 4 作为前端
  • 这个条带请求是什么?为什么它会多次触发?

    对于使用 stripe 的 Laravel 应用程序 此请求https r stripe com 0被解雇多次 如下所示 我刷新主页后 这些请求立即被触发 问题是我最近得到了一个429 too many requests我的实时服务器出现错
  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • AWS-PHP-SDK / SNS 直接寻址返回错误

    您好 我正在使用 Laravel 4 设置来利用 AWS SNS 向我的 iOS 设备发送推送消息 从 AWS 控制台向我的设备发布命令效果很好 然后我尝试从 PHP sns AWS get sns sns gt publish array
  • Laravel Vue 组件只能传递数字?

    在我的 UserMenu vue 中我写道 export default props nameVal data return 并在blade php中
  • 如何将 Laravel-5.6 转换为 .exe

    我正在本地主机中加载项目 我的管理员要求我将 laravel 5 6 与 mysql 一起转换为 exe 我是这方面的新手 不知道 有哪位高手可以指导一下吗 提前致谢 我不确定你的管理员是否应该要求你将 Laravel 项目转换为 exe
  • 雄辩的第一个 where 子句

    我想知道 Laravel 如何实现雄辩的语法 以便可以静态调用第一个 where 子句User where User where id 23 gt where email email gt first 他们有吗public static f
  • Laravel 搜索关系

    我有两个相关的模型 我正在尝试在产品中进行搜索 并且仅显示实际搜索结果 而不是找到该产品的类别的所有产品 我不想搜索任何类别 因为无论搜索什么或找到什么 类别都会始终显示 Example I have the following categ
  • Laravel - 保存在存储文件夹中的图像不向用户显示

    我有这段代码可以将图像保存在 storage app uploads 文件夹中 image main Image where property id id gt get file request gt file file destinati
  • Laravel http 请求:无法运行多个请求

    我在 Laravel http 请求方面遇到了严重的问题 请帮我解决这个问题 我假设我有 2 个请求路由到相同的控制器 Req 1 http localhost 8000 manualScheduler runScript task nam
  • 带数据透视表的 Laravel 查询生成器

    我有两个带有数据透视表的表 Table tours id name country id featured Table countries id name 数据透视表country tour id country id tour id 我想
  • 如何在自定义组件中使用 Vue.js 插件?

    我需要输出一个表格及其内容 可以通过 Ajax 进行更新 所以我打算使用vue tables 2 https github com matfish2 vue tables 2 https github com matfish2 vue ta
  • 扩展蓝图类?

    我想覆盖timestamps 函数中发现Blueprint班级 我怎样才能做到这一点 e g public function up Schema create users function Blueprint table table gt
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • 如何向 laravel-passport 访问令牌添加自定义声明?

    我刚刚使用了 laravel passport 它与 jwt auth 相同 我想向我的 accessToken 添加一些自定义声明 可以吗 我想通过2fa status gt true在访问令牌和 API 调用时 有了这个访问令牌 我还想

随机推荐

  • Python 变长嵌套循环

    我试图在 python 中嵌套一个可变长度的 for 循环 并且能够重用这些变量 for i in range 0 256 for j in range 0 256 for k in range 0 256 myvar i j k 在上面的
  • 删除id最大的地方

    我想删除 order id 最大的行 我尝试了以下方法 DELETE FROM orders WHERE MAX order id 但这是错误的 还有其他想法吗 感谢您的时间 第一个想法 以及许多其他完全相同的想法 DELETE FROM
  • UML 类图中的 Java 服务器页面 (.JSP) 文件

    我正在为即将开始的项目编写设计 我想知道应该如何在我创建的 UML 类图中表示视图 jsp 文件 由于 jsp 文件不是类 它们适合放在这里吗 我认为不会 因为这是一个类图 但我不确定我应该如何表示这些 有什么想法吗 JSP 文件被认为是视
  • 安全 getElementById 或尝试确定 GUI 中是否存在 ID

    Method UiInstance getElementById ID 总是返回GenericWidget对象 即使 ID 不存在 有什么方法可以找出我的应用程序中不存在返回的对象 或者检查 UI 是否包含具有给定 ID 的对象 使用 GU
  • 安装 Docker Windows Server 2019:术语“docker”不被识别为 cmdlet、函数、脚本文件或可操作程序的名称

    尝试在 Windows Server 2019 及以下版本上以进程隔离方式安装 Docker这些步骤 我无法在此服务器上使用 Hyper V 在管理模式下运行 PowerShell 时 然而我得到了错误 Get PackageProvide
  • 如何在 Jetty 中使用 setThreadPool()

    我想看看如何使用setThreadPool 功能 假设我的主要课程如下 import javax servlet SingleThreadModel import org eclipse jetty server Server public
  • 如何在没有 Framework 3.5 的 PC 上安装 WPF 应用程序

    我有一个关于如何将 WPF 应用程序部署到没有 Framework 3 5 的 PC 上的问题 如果一台PC只安装Windows XP和sp3 是否可以设计一个可以直接在这台PC上安装WPF应用程序的安装包 情况是这样的 我设计了一个简单的
  • Python 3.5、ldap3 和modify_password()

    我一直在努力尝试通过脚本发送更新我自己密码的请求 这是代码 usr bin python3 5 from ldap3 import Server Connection NTLM ALL server Server ldap 192 168
  • 在 Python 中使用正则表达式为单词添加引号

    我试图使用正则表达式将句子中的每个单词替换为相同的单词但引用 我所说的单词只是字母 没有数字 例如4 python code应转换为4 python code 但是这段代码产生了错误的结果 gt gt gt import re gt gt
  • 以编程方式从 LocalizedResource.properties 读取密钥

    我能够将 LocalizedResource properties 与 uibinder 一起使用 假设我有在 java 文件中以编程方式创建的小部件 如何根据用户选择的语言 en fr etc 从 LocalizedResource pr
  • 如何将实体的一部分公开为DataContract?

    到目前为止 在使用 WCF 时 我始终将整个 EF 生成的实体或 POCO 通过修改 T4 模板以在 POCO 和属性上包含 DataContract 和 DataMember 公开为 DataContract 现在 我遇到了一种情况 我无
  • 如何从 C# 应用程序内部检查新 Microsoft Edge Chromium 的版本?

    有谁知道如何从 C 应用程序内部检查 PC 上安装的 Edge Chromium 版本 我在发布之前进行了搜索 在该线程的评论中 有人提供了一种从旧版 Microsoft Edge 获取版本号的方法 如何检测是否安装了 Microsoft
  • 访问动画的presentationLayer以检测碰撞

    我有两个对象 一个通过动画移动 另一个在我用手指拖动时移动 我希望能够使用 CGIntersectsRect 检测两者何时 碰撞 然而 我听说为了用动画来做到这一点 我需要访问表示层以从那里获取值 然而 我不知道该怎么做 这是我的动画代码
  • 如何获取YouTube视频的比特率信息?

    我正在使用 YouTube 视频进行测试 我想知道如何获取播放视频的比特率信息 我使用了两种方法来了解有关比特率的信息 但没有得到任何信息 1 Right click on a video and choose Stats for nerd
  • 多对多关系?

    伙计们 我正在尝试为我的公司制作一个简单的票证生成系统 作为一个帮助 现在 我有一张名为tblTicket另一个表称为tblEngineer在我的 MSSQL 数据库中 我的应用程序采用 C Windows 表单 因此在新的票证生成表单上
  • WindowManagerBadTokenException 无法添加窗口

    我有一个错误如下 TODO tryAgain private void tryAgain new AlertDialog Builder this setTitle Game Over setMessage Times Up setPosi
  • jQuery Mobile:data-rel =“back”+ data-transition 不起作用?

    我创建了一个 jsfiddle 它可以使用导航栏启用选项卡 而无需更改 url 哈希 http jsfiddle net ryanhaney eLENj 1 如果我单击主页上的 第 1 页 链接 然后单击 后退 按钮 我将获得预期的反向幻灯
  • 用向量移动字符

    我正在自学 pygame 并正在考虑让我的角色能够旋转 然后朝他们面对的方向移动 我可以进行旋转 但无法让角色沿着图像面向的方向移动 代码在 Trinket 上HERE class Bob pygame sprite Sprite def
  • 如何使用函数参数作为变量的一部分?

    这有效 chrome storage local get sizePref function items Get size preferences from storage var sizePref2 items sizePref tops
  • Laravel Eloquent 无法使用复合主键保存模型

    当定义复合主键然后在实例化模型上调用 save 时 会引发异常 ErrorException E UNKNOWN PDO lastInsertId expects parameter 1 to be string array given 错