我使用此方法在DB中创建新行:
$input = $request->all();
return Recipient::create([$input]);
如何使用值向$input
添加其他字段?
我试过了:
$input["user_id"] = Auth::id();
但是当我显示查询INSERT时,我看不到字段user_id
答案 0 :(得分:5)
此处的问题是您可能未在$fillable
模型中设置Recipient
属性。您应该在那里添加user_id
:
$fillable = [ ..., 'user_id'];
然而,合并输入通常不是处理此类事情的最佳方式。如果您已正确设置关系,则应该可以执行以下操作:
Auth::user()->recipients()->create($request->all());
答案 1 :(得分:1)
像@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 :(得分:0)
我还不确定你究竟在寻找什么。假设您有2-3个字段user_id
,title
,content
。要插入数据库,您需要执行以下操作:
$input = new Recipient(['title'=>'You title', 'content'=>'Your content']);
$input->save();
它将使用递增的user_id保存两个字段。
答案 3 :(得分:0)
兄弟,你用错了方法, 试试这个:
{{1}}