我使用此方法在DB:中创建新行
$input = $request->all();
return Recipient::create([$input]);
如何使用值向$input
添加附加字段?
我试过了:
$input["user_id"] = Auth::id();
但是当我显示查询INSERT时,我看不到字段user_id
这里的问题是您可能没有在Recipient
模型中设置$fillable
属性。你应该在那里添加user_id
:
$fillable = [ ..., 'user_id'];
然而,合并输入通常不是处理此类问题的最佳方式。如果你已经正确地设置了关系,那么应该可以这样做:
Auth::user()->recipients()->create($request->all());
更新
就像@Marcin Nabialek所说的:将"user_id"添加到$fillable
数组中。而且,他的解决方案更清洁。
合并
方法merge
就是您想要的:Merge new input into the current request's input array.
$request->merge(['user_id' => Auth::user()->id]);
Recipient::create($request->all());
请参阅此处的api文档:https://laravel.com/api/5.2/Illuminate/Http/Request.html#method_merge
我仍然不确定你到底在寻找什么。假设您有2-3个字段user_id
、title
、content
。要插入数据库,您需要执行以下操作:
$input = new Recipient(['title'=>'You title', 'content'=>'Your content']);
$input->save();
它将使用递增的user_id保存两个字段。
Bro,您使用了错误的方法,试试这个:
$input["user_id"] =Auth::user()->id;