我过去曾与Laravel合作过一些项目。创建表并在控制器中使用它们非常容易。但是,我主要使用纯PHP。它们大多数不是基于类对象的。我想编写类似于Laravel模型系统的代码。我认为手动生成数据库表会有所帮助。
我需要实现以下目标:
手动创建表,并使类和表名称相同。创建对象(不分配表名)时,该类应该能够使用类名获取所有表信息(字段,ID等)。
该类应该能够动态获取表字段,并且必须能够使用Object->save()
保存数据,并能够使用id:$obj=Object::find(2);
class drivers extends Model
{
//'''''
}
$driver = new $driver();
$diver->name="foo";
$diver->age=19;
$diver->save();
//------------
$diver=Driver::find(3);
$diver->delete();
我想用纯PHP完成上述操作,但是我无法管理。有人可以帮忙吗?非常感谢,谢谢。
我这样尝试过:
<?php
class Model
{
protected function __construct() {
public static function find($id){
$tablename=get_somehow_extented_classname;
//....
return $datarow;
}
public static function delete($id){
$tablename=get_somehow_extented_classname;
//....
$result=query("delete from $tablename where id=$id");
return $result;
}
}
use Model; // core model (I want this)
class drivers extends Model
{
// nothing lot of things here
}
答案 0 :(得分:0)
为我的问题找到了解决方案-> https://medium.com/@kshitij206/use-eloquent-without-laravel-7e1c73d79977谢谢。
我在这里做了一些步骤。(有时对其他人可能会有帮助) 在xammp(我的php运行环境)中创建了文件夹
已执行composer require illuminate/database
在根目录下创建bootstrap.php
<?php
require "vendor/autoload.php";
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule;
$capsule->addConnection([
"driver" => "mysql",
"host" =>"127.0.0.1",
"database" => "testdatabase",
"username" => "root",
"password" => ""
]);
//Make this Capsule instance available globally.
$capsule->setAsGlobal();
// Setup the Eloquent ORM.
$capsule->bootEloquent();
$capsule->bootEloquent();
在根目录下创建admins.php
<?php
require "vendor/autoload.php";
use Illuminate\Database\Eloquent\Model;
class admins extends Model
{
public $timestamps = false;
protected $primaryKey = 'admin_id';//primery key defaut id
}
在根目录下创建了test.php
<?php
require "bootstrap.php";
require "admins.php";
$admin = new admins;
$admin->admin_email="sdfdfd@.sds";
$admin->admin_password="ljkklj";
$admin->username="sdfdfd";
$admin->profile_img ="pic\340943.png";
$admin->save();
//....
$admin2=admins::find(2);
它正在工作...我要在我未来的纯PHP项目中使用它:)