مشکل در ارتباط با دیتابیس در mvc

- 1 هفته پیش
توسط علی بیات آپدیت شد
Ali Ghaleyan ( 2430 تجربه )
1 هفته پیش

سلام و درود
میخواستم اسم جدول تقریبا شبیه به لاراول از مدل user گرفته بشه اما دقیقا نمیدونم چطور اسم جدول از کلاس مدل یوز به کلاس اصلی خود مدل و از اونجا به دیتابیس بفرستم طوری که اسم جدول به صورت استاتیک نباشه
ممنون از توجهتون

در ضمن من اطلاع ندارم که چطور کدم رو اینجا به اشتراک بزارم که درست نمایش داده بشه

@ali.bayat

بهترین پاسخ انتخاب شده توسط Ali Ghaleyan
Ali Ghaleyan
1 هفته پیش

@ali.bayat
خیلی خیلی ممنونم ازتون
اینطوری درستش کردم کار کرد اونطوری که میخواستم شد...

class Models
{
    public $table;

    public function __construct()
    {
        //
    }

    public function __call($method, $parameters)
    {
        return (new Database($this->table))->$method(...$parameters);
    }

    public static function __callStatic($method, $parameters)
    {
        return (new static)->$method(...$parameters);
    }
}
علی بیات ( 48117 تجربه )
1 هفته پیش

@Serjik
متوجه سوالتون نشدم.

کدتون رو با ۳ تا بَک‌تیک (`) شروع و تمام کنید.
https://guides.github.com/features/mastering-markdown/

Ali Ghaleyan ( 2430 تجربه )
1 هفته پیش

@ali.bayat

<?php
class IndexController extends Controller
{
    public function registerPost()
    {
        $this->model('User');
        User::get();
    }
}
?>

//// user model
<?php
class User extends Models
{
    public $rows=[];
    public $table='user';
}
?>

//// model
<?php
class Models
{
    public $table;
    public static function __callStatic($method , $parameters)
    {
        return (new Database('tableName'))->$method(...$parameters);
    }
}
?>

<?php
class Database
{
    public function __construct($table)
    {
        echo $table;
    }

    public function get()
    {

    }
}
?>
علی بیات ( 48117 تجربه )
1 هفته پیش

برای هر مدل اسم جدول دیتابیس رو با پراپرتی table مشخص میکنید . بین کلاس‌ها هم میتونید برای انتقال داده از constructor استفاده کنید.

Ali Ghaleyan ( 2430 تجربه )
1 هفته پیش

@ali.bayat
یه همچین چیزی منظورتونه:

class Models
{
    public $table;

    public static $currentTable;

    public function __construct()
    {
        self::$currentTable=$this->table;
    }

    public static function __callStatic($method, $parameters)
    {
        return (new Database(self::$currentTable))->$method(...$parameters);
    }
}

الان این کد کار نکرد...

Ali Ghaleyan ( 2430 تجربه )
1 هفته پیش

@ali.bayat
خیلی خیلی ممنونم ازتون
اینطوری درستش کردم کار کرد اونطوری که میخواستم شد...

class Models
{
    public $table;

    public function __construct()
    {
        //
    }

    public function __call($method, $parameters)
    {
        return (new Database($this->table))->$method(...$parameters);
    }

    public static function __callStatic($method, $parameters)
    {
        return (new static)->$method(...$parameters);
    }
}
علی بیات ( 48117 تجربه )
1 هفته پیش

@Serjik
خواهش می‌کنم٬ موفق باشید.

برای ارسال پاسخ باید وارد سایت شوید