【发布时间】:2016-03-26 15:26:18
【问题描述】:
我在这里遇到了一个大问题。我使用 laravel 5.1 和 Sql Server 2012 工作。问题是: 我数据库的所有表都有一个触发器,负责记录该表上的活动。此触发器在主表上的插入之后执行插入。这样,每次我插入一个新的 Person 时,触发器都会插入一个新的 PersonLog。
这样,当我这样做时,在 Laravel 上:
$person = Person::create(['personName' => 'Anderson']);
echo $person->id; //it tries to show me the log id instead of person id.
这是因为 PDO 使用 @@identity 变量来搜索最后插入的 id 而不是使用 SCOPE_IDENTITY()。
解决方案:
- 我使用手动查询而不是 pdo lastInsertId() 方法在 laravel 源上尝试了拉取请求。它被拒绝了。
- 另一个解决方案是创建一个扩展 PDO 的类并让 laravel 使用我的类而不是原生 pdo。但我不知道该怎么做。
你们能帮帮我吗? 谢谢!
【问题讨论】:
-
也许您可以更改
config/app.php以使用您的提供者(和外观)而不是内置的。尝试创建 Laravel 包,以一种更简洁的方式将内容集成到您的应用程序中,这真的不是那么难,而且奖励是拥有一种可以很好地扩展的优雅方法。 -
我使用另一种解决方案解决了我的问题。我已经从我的日志表中删除了主键字段
标签: sql-server laravel inheritance pdo laravel-5.1