database - Laravel 使用数据库 : where does it need to be placed? 在模型中还是在 Controller 中?

标签 database laravel models

在 Laravel 中编写数据库查询的最佳位置是什么?

在 Controller 中还是在模型中?

请告诉我哪种方式是正确的:

在这样的 Controller 中使用?

<?php
    namespace App\Http\Controllers;

    use Illuminate\Http\Request;

    use DB; // <--------

    use App\Http\Requests;
    use App\Http\Controllers\Controller;

    class UsersController extends Controller
    {
        public function getUser()
        {
            return DB::table('users')->where('name', 'John')->value('email');
        }
    }

在这样的模型中使用?

<?php
    namespace App\Models;

    use DB; // <--------

    use Illuminate\Database\Eloquent\Model;

    class UsersModel extends Model
    {
        protected $table = 'users';

        public function getUser()
        {
            return DB::table('users')->where('name', 'John')->value('email');
        }
    }

或者以上都不是?

最佳答案

从学术上讲,最好只将所有基于数据的逻辑保留在模型中。但在实践中,将简单查询保留在 Controller 中并使用 scopes 更方便。对于重复的东西。在这种情况下,您的代码可读性更高且更易于维护。此外,所有 Laravel 书籍都建议相同。

无论如何,它更基于意见。

关于database - Laravel 使用数据库 : where does it need to be placed? 在模型中还是在 Controller 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36938163/

相关文章:

database - 如何存储数据库(特别是 Symfony)所需的 'base' 或 'initial' 数据?

.net - 必须断开连接的数据库应用程序的设计模式

php - Mockery 在测试 Laravel 门面时抛出 NoMatchingExpectationException

javascript - getstream.io 获取 CORS 请求被拒绝 : https://api. stream-io-api.com/api/v1.0/feed/user

python - Django 使用 Through 表属性进行查询

c# - 如何使用微软技术开发dbms独立应用程序?

mysql - INDEX Mysql for 字符串

laravel - 如何在 Laravel Vapor 应用程序中获取 HTTP 请求的 IP?

python - 如何获取 Django 中登录用户的名字和姓氏?

database - 何时将模型拆分为多个数据库表?