如何在Laravel中为::create设置字段



我使用此方法在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_idtitlecontent。要插入数据库,您需要执行以下操作:

$input = new Recipient(['title'=>'You title', 'content'=>'Your content']);
$input->save();

它将使用递增的user_id保存两个字段。

Bro,您使用了错误的方法,试试这个:

  $input["user_id"] =Auth::user()->id;

相关内容

最新更新