我在这里面临一个大问题。我使用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。但我不知道该怎么做。
答案 0 :(得分:0)
我解决了! 顺便说一句,这真的很容易,我无法想象我是怎么想的。我做了什么?让我解释一下: