哪个是好的模型或控制器

Which is good Model or Controller

我想在Laravel中构建一个复杂的项目(会有很多数据)。但我想在模型中编写代码(SQL 查询)。我不想在控制器中编写这些查询,我在模型中使用“Illuminate\Support\Facades\DB”,而不是在控制器中。所以我希望我的查询在控制器中的模型和其他代码中。这种方法在Laravel中好用吗?我问这些是因为我在查询生成器在控制器中使用的其他来源中看到了这一点。使用模型,但仅使用 table 名称或其他函数,以便其他来源在控制器中编写查询。我可以使用查询生成器在模型中编写查询吗?如下所示。

Controller .

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\model_test1;

class model_test extends Controller
{
    function index(){
        $test = new model_test1;
        return $test->fetch();
    }
}

Model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class model_test1 extends Model
{
    protected $table="users";
    public function fetch(){

        return  DB::table("users")->get()->where('id',2);

    }
}

您应该为每个模型创建存储库。一个存储库应该反映一个模型。

控制器应该调用存储库函数来访问数据。下面是存储库的示例。

<?php

namespace App\Repositories;

use App\Advertisement;
use App\JobAdvertisement;

class UserAdvertisementRepository
{
    /**
     * @param $employeeType
     * @param $userId
     * @return mixed
     */
    public function getAdvertisementBasedOnEmployeeType($employeeType, $userId)
    {
        return JobAdvertisement::where('employee_type', $employeeType)
            ->where('user_id', $userId)
            ->paginate(2);
    }

?>

您也可以为业务逻辑提供服务class。