如何在模型中运行方法而不是laravel 5.1中的控制器?

时间:2015-08-03 06:08:01

标签: php laravel laravel-5 laravel-5.1

我的控制器中有以下方法:

public function store()
{
    $data=Input::all();
    User::create($data);
}

以上代码完美无缺。我的问题是我们可以在模型中运行上述方法而无需在控制器中写入吗?哪种方法最好?

3 个答案:

答案 0 :(得分:3)

您可以尝试以下方式

在您的模型中

public function insetUser()
{
        $input = Input::all();
        User::create($input);
    //here instead of User,you can use self like  self::create($input);
}

在控制器中你可以

public function store()
{
    User::insetUser();
}

答案 1 :(得分:2)

如果它在模型中,你将如何触发它?

实际上只有一行代码

User::create(Input::all());

这里的是模型User和方法create的实例,注入模型Input。你可以设置(模型)User.php

public function storedata()
{
 return $this->create(Input::all());
}

然后在你的控制器中运行它:

User::storedata();

但它更好吗? ; - )

答案 2 :(得分:1)

在这种情况下,我认为你不会因为搬家而获得太多收益。

如果这是您的Controller方法:

public function store()
{
    $data=Input::all();
    User::create($data);
}

然后这是有道理的。输入数据由控制器方法处理,并传递给create模型上的User方法。

但是,如果在创建用户记录之前需要更多逻辑,那么将该逻辑抽象到User模型是完全有效的。但是,尽管如此,我认为您当前的实施是合适的。