在Laravel Controller上编写MySQL查询是否可以?

时间:2014-10-31 11:31:19

标签: laravel laravel-4

参考Laravel教程我开始创建Laravel应用程序,我看到一些导师在Controller上编写了MySQL查询

例如:

    $user = new User();
    $user->user_name = $input['user_name'];
    $user->email = $input['email'];
    $user->password = $input['password'];
    $user->phone = $input['phone'];
    $user->mobile = $input['mobile'];
    $user->address = $input['address'];
    $user->save();

例如2:

$data['count'] = DB::select("SELECT COUNT(*) AS user_count FROM users WHERE notification='1'");

可以在Laravel控制器上编写所有这些查询吗?请告诉我

1 个答案:

答案 0 :(得分:0)

从MVC的角度来看,它违背了标准。

但是,您可以将查询放在控制器中。当我在过去编写查询时,我通常会在控制器中保留简单的查询,在模型中保留复杂的查询。这完全取决于你。

您可以创建一个除了保存到模型之外什么都不做的控制器功能。

// Controller
class UserController extends BaseController
{

    function afterFormGetsSubmitted(){
        $formData = Input::get();
        saveToModel($formData);

        /*
            Do other stuff
        */
    }

    function saveToModel($input){
        $user = new User();
        $user->user_name = $input['user_name'];
        $user->email = $input['email'];
        $user->password = $input['password'];
        $user->phone = $input['phone'];
        $user->mobile = $input['mobile'];
        $user->address = $input['address'];
        $user->save();
    }
}


这是指向询问SQL查询和控制器的人的链接:
https://softwareengineering.stackexchange.com/questions/143248/strategies-for-avoiding-sql-in-your-controllers-or-how-many-methods-should-i