Laravel 数据库 Table 纯模型实现 PHP
Laravel DB Table Model Implementation in Pure PHP
我过去参与过一些 Laravel 项目。创建 table 并在控制器中使用它们非常简单。但是,我主要使用纯 PHP。其中大多数不是 class 基于对象的。我想编写类似于 Laravel 模型系统的代码。我认为手动生成一个 DB table 会很有帮助。
我需要实现以下目标:
手动创建一个table并使class与table同名。 class 应该能够在创建对象时使用 class 名称获取所有 table 信息(字段、id 等)(不分配 table 名称)。
class 应该能够动态获取 table 字段,并且必须能够使用 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
}
找到了我的问题的解决方案 -> https://medium.com/@kshitij206/use-eloquent-without-laravel-7e1c73d79977 谢谢..
这里我做了一些步骤..(有时对其他人有帮助)
在 xammp 中创建文件夹(我的 php 运行 环境)
已执行composer require illuminate/database
在 root
上创建了 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();
在 root
上创建了 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
}
在 root
上创建了 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 ="pic0943.png";
$admin->save();
//....
$admin2=admins::find(2);
它正在运行...我将在我未来的纯 php 项目中使用它 :)
我过去参与过一些 Laravel 项目。创建 table 并在控制器中使用它们非常简单。但是,我主要使用纯 PHP。其中大多数不是 class 基于对象的。我想编写类似于 Laravel 模型系统的代码。我认为手动生成一个 DB table 会很有帮助。
我需要实现以下目标:
手动创建一个table并使class与table同名。 class 应该能够在创建对象时使用 class 名称获取所有 table 信息(字段、id 等)(不分配 table 名称)。
class 应该能够动态获取 table 字段,并且必须能够使用 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
}
找到了我的问题的解决方案 -> https://medium.com/@kshitij206/use-eloquent-without-laravel-7e1c73d79977 谢谢..
这里我做了一些步骤..(有时对其他人有帮助) 在 xammp 中创建文件夹(我的 php 运行 环境)
已执行composer require illuminate/database
在 root
上创建了 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();
在 root
上创建了 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
}
在 root
上创建了 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 ="pic0943.png";
$admin->save();
//....
$admin2=admins::find(2);
它正在运行...我将在我未来的纯 php 项目中使用它 :)