如何在 Codeigniter 4 中的单个控制器中访问两个不同的模型?

我是 Codeigniter 4 的新手,所以我问这个问题。


事实上,我有两个不同的型号。


首先是tbl_user。


其中有很多字段 tbl_user(id, name,duty_station,enlistment_date,dob) // 这里 id 是主键。


其次是usermos。


usermos 有四个字段 [id, user_id, mos_id, extra_mos_id] //这里id是主键,user_id是tbl_user的外键


我已经生成了 get_profile 的控制器...


我想将usermos模型访问到get_profile控制器中。


以下是我的代码


标头


<?php namespace App\Controllers;


use CodeIgniter\RESTful\ResourceController;

use App\Models\MosModel;

use App\Models\Additional_mosModel;

use App\Models\Api_auth_model;

use App\Models\Api_Usermos_Model;

控制器


public function get_profile()

    {

     

      if (($this->request->getMethod() == 'post') && ($_SERVER['PHP_AUTH_USER'] == AUTHUSER_NAME) && ($_SERVER['PHP_AUTH_PW'] == AUTH_PASSWORD)) {

        if(!empty($this->request->getPost('id'))){


          $user_api_mos_model = new Api_Usermos_Model();

        $usermos = $this->user_api_mos_model->findAll();

           print_r($usermos);

           exit;

        if($profile){

          if($usermos){

          

          }

          $selected_mos = $this->getMosFromID($usermos[0]['mos_id']);

         

          $selected_add_mos = $this->getAdd_MosFromID($usermos[0]['additional_mos_id']);

          $profile['badge'] = $this->getBadgeFromID($profile['badge_id']);

          // exit;

          return $this->respond([

            "status" => "Success",

            "message" => "Profile found.",

            "Common" => ["Title" => "Load Profile API", 'version' => '1.0', 'Description' => 'Load Profile API', 'Method' => 'POST'],

            "Response" => ["Userdata" => $profile,"mos" => $selected_mos,"additonal_mos" => $selected_add_mos]

          ]);

        }else{

          return $this->respond([

            "status" => "Fail",

            "message" => "Profile Not found.",

            "Common" => ["Title" => "Load Profile API", 'version' => '1.0', 'Description' => 'Load Profile API', 'Method' => 'POST'],

            "Response" => ["Value" => 'Profile Not found.']

          ]);

        }

      }

    }

  }

感谢您宝贵的时间。


Cats萌萌
浏览 121回答 1
1回答

qq_笑_17

只需在控制器页面标题部分的顶部定义模型的命名空间并在该控制器页面中使用即可。例如:<?php namespace App\Controllers;&nbsp;use&nbsp; app\models\User;use app\models\Usermos;Class UserController extend controller {&nbsp; &nbsp; public function actionProfile (){&nbsp; &nbsp; &nbsp; $user = new User();&nbsp; &nbsp; &nbsp; $user_mos = new Usermos();&nbsp; &nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP