纯PHP中的Laravel DB表模型实现

时间:2018-12-04 11:57:29

标签: php laravel eloquent laravel-migrations

我过去曾与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
}

1 个答案:

答案 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项目中使用它:)