Реализация табличной модели Laravel DB в Pure PHP - PullRequest
0 голосов
/ 04 декабря 2018

В прошлом я работал с некоторыми проектами Laravel.Создать таблицу и использовать ее в контроллере довольно просто.Тем не менее, я в основном работаю с чистым PHP.Большинство из них не основаны на объектах класса.Я хочу написать код, который будет работать аналогично модельной системе Laravel.Я думаю, будет полезно сгенерировать таблицу БД вручную.

Мне нужно добиться следующего:

Создать таблицу вручную и создать класс и то же имя, что и у таблицы.Класс должен иметь возможность получать всю информацию о таблице (поля, идентификатор и т. Д.), Используя имя класса при создании объекта (не назначая имя таблицы).

Класс должен иметь возможность динамически получать поля таблицы и должену меня есть возможность сохранять данные, используя Object->save(), и получить строку, используя идентификатор: $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 голосов
/ 05 декабря 2018

нашел решение для моей проблемы -> 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 вroot

<?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 :)

...