حسین
5 سال پیش توسط حسین مطرح شد
0 پاسخ

ریلشن داینامیک بین چند دیتا بیس در لاراول

سلام
من یه سری دیتا بیس دارم و میخوام بینشون توی laravel ریلشن بزارم
چند تا entity دارم

Trader
Server

هر Trader belongsto Server و توی دیتا بیس اصلیم هست که توی config/database هست اسمش mysql
و اطلاعات Trader توی یه سرور دیگه که اطلاعاتش توی دیتا بیس دیگه هست و مشخصاتش توی entity Server هست
حالا من توی AppserviceProvider config دیتابیس ها رو گذاشتم

foreach ( Server::all() as $server )
        {
            $connection_name = $server->get_report_server_connection_name() ;
            $report_server = $server['report_server'] ;

            Config::set("database.connections.$connection_name", [
                'driver' => 'mysql',
                "host" => $report_server->get('host'),
                "database" => $report_server->get('database'),
                "username" => $report_server->get('username'),
                "password" => $report_server->get('password'),
                "port" => $report_server->get('port'),
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
                'strict'    => false,
            ]) ;

        }

حالا براای relation های 1 * n مشکلی ندارم واقعا هم نمیدونم چرا خوب کار میکنه اینجوری relation رو پیاده کردم

public function report_transactions() : HasMany
    {
        $name = $this->server->get_report_server_connection_name() ;

        return $this->setConnection($name)->hasMany(TraderReportTransaction::class ,"LOGIN","account_number") ;
    }

ولی وقتی همینجوری از رابطه Belongsto استفاده میکنم نمیتونه توی بدنه متد ریلشن $this->server رو بگیره و میگه undefind

چ جوری باید پیاده کنم کسی پیشنهادی داره !؟

@rezajahangir
@websaz
@hesammousavi
@samanzdev