Slim 3&Eloquent调用单个Model文件中的多个表

时间:2018-10-19 18:58:30

标签: php eloquent slim

最近我一直在学习使用Slim 3和雄辩的语言。

我想做的就是这个(如果有可能的话)

所以我有一个Model.php文件

<?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";来命名我的,我有点理解我定义的表是针对整个 Class 的,但是有没有办法或解决方法?

这里的主要思想是我有一些非常小的数据库表,不值得为它们创建另一个模型文件

如果这不可能,那有什么选择呢?

我是否必须制作另一个模型文件,并使用 namespace App \ Models \“ new_model”;

在需要它的控制器顶部调用它

1 个答案:

答案 0 :(得分:0)

我建议将数据结构与数据访问逻辑分开。例如:将数据库查询的代码放入存储库中。存储库不在乎数据来自何处(表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 ?: [];
    }
}