P粉4935341052023-09-01 20:04:17
您可以通过创建新实例或使用 model() 辅助函数来访问类中的模型。
像这样的例子
// Create a new class manually $userModel = new \App\Models\UserModel(); // Create a new class with the model function $userModel = model('App\Models\UserModel', false); // Create a shared instance of the model $userModel = model('App\Models\UserModel');
P粉7224099962023-09-01 10:37:48
我发现了问题。这是执行此操作的正确方法。
文件夹结构
- WebsiteFolder -- Site1 --- app --- public --- tests --- writeable (.env, spark and other file) -- Site2 --- app --- public --- tests --- writeable (.env, spark and other file) -- shared/Models (DBSetting.php) -- system
控制器 - Home.php
namespace App\Controllers; use shared\Models\DBSetting; class Home extends BaseController { public function index() { $db = new \shared\Models\DBSetting(); return view('welcome_message'); } }
Autoload.php
public $psr4 = [ APP_NAMESPACE => APPPATH, // For custom app namespace 'Config' => APPPATH . 'Config', 'shared\Models' => ROOTSOURCE . '/shared/Models' ];
Constants.php
define('ROOTSOURCE', dirname(__DIR__,3));
DBSetting.php
命名空间共享\模型; 使用 CodeIgniter\Model;
类 DBSetting 扩展模型{
function __construct() { parent::__construct(); } public function save() { return true; }
}
我们也可以调用站点2中的模型。只需在Autoload.php中设置正确的路径即可引用站点2中的模型。
注意: 如果站点 2 中的模型包含另一个模型或链接,如果我们从站点 1 调用,则 codeigniter 4 系统将读取来自站点 1 的链接、模型。因此,请确保调用站点 2 中的普通模型。或者只是创建一个共享模型文件夹如上。