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

时间:2016-07-19 17:53:03

标签: laravel laravel-5 eloquent laravel-5.2

我使用此方法在DB中创建新行:

$input = $request->all();
return Recipient::create([$input]);

如何使用值向$input添加其他字段?

我试过了:

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

但是当我显示查询INSERT时,我看不到字段user_id

4 个答案:

答案 0 :(得分:5)

此处的问题是您可能未在$fillable模型中设置Recipient属性。您应该在那里添加user_id

 $fillable = [ ..., 'user_id'];

然而,合并输入通常不是处理此类事情的最佳方式。如果您已正确设置关系,则应该可以执行以下操作:

Auth::user()->recipients()->create($request->all());

答案 1 :(得分:1)

更新

像@Marcin一样,Nabialek说:将'user_id'添加到$fillable数组。而且,他的解决方案更清晰。

合并

您正在寻找方法mergeMerge 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_idtitlecontent。要插入数据库,您需要执行以下操作:

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

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

答案 3 :(得分:0)

兄弟,你用错了方法, 试试这个:

{{1}}