代码之家  ›  专栏  ›  技术社区  ›  Frosty

在单个模型文件中调用1个以上的表(&L)

  •  0
  • Frosty  · 技术社区  · 7 年前

    最近我一直在学习使用Slim3和雄辩。

    我想做的是(如果可能的话)

    所以我有一个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(){
    
        }
    
    
    }
    
    ?>
    

    和my 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"; 我有点理解我定义的表是为整个 等级 但是有什么办法或者解决办法吗?

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

    如果这是不可能的,还有什么选择呢?

    我需要做另一个模型文件并在需要的地方调用它吗? 命名空间应用程序\模型\“新\模型”;

    1 回复  |  直到 7 年前
        1
  •  0
  •   odan    7 年前

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