Slim 3 & Eloquent вызывает более 1 таблицы в одном файле модели - PullRequest
0 голосов
/ 19 октября 2018

Недавно я научился использовать Slim 3 и eloquent.

Я пытаюсь сделать следующее (если это возможно)

Итак, у меня есть модель.php file

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model as Model;
use Illuminate\Database\Capsule\Manager as DB;

class Course extends Model{

    protected $table = "courses";

    public function GetCourses(){

    }


}

?>

И мой Controller.php

<?php 

namespace App\Controllers;
use App\Models\Course;
use Slim\Views\Twig as View; 

class CourseController extends Controller{

    public function index($request,$response){

        return $this->view->render($response,'course/CourseNew.twig',$data);

    }

}
?>

Так что мой вопрос внутри Model.php, можно ли как-нибудь вызвать другую таблицу?

Я уже назвал мой с protected $table = "courses"; Я понимаю, что таблица, которую я определил, предназначена для всего Класс , но есть ли способ или обходной путь?

Основная идея здесьчто у меня есть несколько таблиц базы данных, которые очень малы и не имеют смысла создавать для них другие файлы моделей

Если это невозможно, какова альтернатива?

Нужно ли создавать другой файл моделии вызовите его поверх моего контроллера, где мне это нужно, используйте namespace App \ Models \ "new_model";

1 Ответ

0 голосов
/ 20 октября 2018

Я бы рекомендовал отделить структуру данных от логики доступа к данным.Например: поместите код для запросов к базе данных в репозиторий.Хранилищу все равно, откуда берутся данные (таблица x или таблица y).

Пример

<?php

namespace App\Repository;

use App\Model\Course;

class CourseRepository extends Repository
{
    public function __construct(Connection $db)
    {
        $this->db = $db;
    }

    public function findCourceById(int $courseId): ?Course
    {
        // execute query here
        //$this->db->....

        return $course;
    }

   public function findSomething(): array
    {
        // execute query here
        //$this->db->....

        return $rows ?: [];
    }
}
...