Laravel在存储之前在输入中注入数据

时间:2014-08-17 22:22:33

标签: php laravel laravel-4

在我的控制器的商店功能中我有:

public function store()
    {
        $validator = Validator::make($data = Input::all(), Item::$rules);

        if ($validator->fails())
        {
            return Redirect::back()->withErrors($validator)->withInput();
        }

        Item::create($data);

        return Redirect::route('spesas.index');
    }

缺少的是user_id字段。

我认为,因为插入用户是auth one,不通过POST传递id,而是使用控制器中的Auth :: user()检索它(看起来更安全)。

现在我有问题是在Item :: create($ data)之前的输入字段中插入Auth :: user()id;

我做正确的事吗?有什么建议吗?

谢谢,

4 个答案:

答案 0 :(得分:2)

只需将您的用户ID添加到$ data数组:

$data['user_id'] = Auth::user()->id;

这很简单。 : - )

或者,你可以有一个名为' user_id'的隐藏输入字段。并将当前授权的用户ID添加为字段值。由你决定。

答案 1 :(得分:1)

好的旧+标志可以帮到你:

Item::create($data + ['user_id' => Auth::id()]);

答案 2 :(得分:0)

尝试Auth::user()->id,而不是Auth::id()

或者

$item = new Item($data);
Auth::user()->items()->save($item);

答案 3 :(得分:0)

所以基本上我找到的更清洁的解决方案是在模型的构造函数中注入正确的id。所以我将释放麻烦的控制器(并避免重复的代码)