我正试图将数据插入相关表中,但是我不知道如何获取父表的ID以便插入到关系表中。有两个表wallet
,然后是walletlogs
,钱包日志与hasMany有关。现在,我需要在wallet和walletlogs中都插入数据,我成功地将数据插入了wallet,但是没有id却无法插入walletlogs。如何在插入数据的同时从钱包中查找ID,并使用该ID插入walletlogs。请注意,钱包与用户表有关。
The relation in wallet model:
public function wallet_logs(){
return $this->hasMany('App\Walletlog');
}
Inserting data:
$wallet = Wallet::where('user_id', $id)->increment('wallet_balance',200); //
this is how am inserting data into wallet.
如何在插入数据时从钱包中获取ID,以及如何将数据插入钱包日志中。
答案 0 :(得分:2)
来自laravel文档:
[...] create方法接受一个属性数组,创建一个模型并将其插入数据库中。
laravel示例:
$post = App\Post::find(1);
$comment = $post->comments()->create([
'message' => 'A new comment.',
]);
更新:
您的问题:
$wallet = Wallet::where('user_id', $id)->first()->increment('wallet_balance',200);
//Since `->increments()` does not return a query builder instance, you can not chain your calls like `->increments->wallet_logs()`, and need to get the wallet again:
Wallet::where('user_id', $id)
->first()
->wallet_logs()->create([
'field_name' => 'value'
]);
更新2
为避免第一个示例的两个查询,您可以执行以下操作:
$wallet = Wallet::where('user_id', $id)->first();
$wallet->increment(200);
$wallet->wallet_logs()->create([
'field_name' => 'value'
]);
您可以详细了解here。
希望有帮助。
答案 1 :(得分:0)
为什么不尝试运行选择查询以从相关表中获取ID,然后将其发布到变量中,然后执行此操作而不是获取