راکت
Ali Ghaleyan
Ali Ghaleyan
7 سال پیش توسط Ali Ghaleyan مطرح شد
حل
6 پاسخ

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

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

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

@ali.bayat


ثبت پرسش جدید
Ali Ghaleyan
Ali Ghaleyan
تخصص :برنامه نویس لاراول
@Serjik7 سال پیشمطرح شد
0

@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);
    }
}

علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
0

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

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


Ali Ghaleyan
Ali Ghaleyan
تخصص :برنامه نویس لاراول
@Serjik7 سال پیشمطرح شد
0

@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()
    {

    }
}
?>

علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
1

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


Ali Ghaleyan
Ali Ghaleyan
تخصص :برنامه نویس لاراول
@Serjik7 سال پیشمطرح شد
0

@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
Ali Ghaleyan
تخصص :برنامه نویس لاراول
@Serjik7 سال پیشمطرح شد
0

@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);
    }
}

علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
1

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


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام