簡體   English   中英

Laravel動態模型數據庫

[英]Laravel Dynamic model database

我有一個用於數據庫表的模型,基本上是一個表,但是在不同的數據庫中,如何在模型中設置到數據庫的連接?

protected $connection = 'ls';

上面的代碼不是我要找的,我需要傳遞主機,端口,用戶名和密碼。 因為連接存儲在DB中而不是配置文件中。 我在想function __construct()並像Model($data)::where()..etc這樣調用

還是我想錯了方向,有人可以給我一個更好的主意嗎?

您可以通過維護以下方面從Eloquent模型進行連接

首先,您可以在database.php文件中定義多個連接

<?php
return array(

'default' => 'mysql',

'connections' => array(

    # Our primary database connection
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'host1',
        'database'  => 'database1',
        'username'  => 'user1',
        'password'  => 'pass1'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

    # Our secondary database connection
    'mysql2' => array(
        'driver'    => 'mysql',
        'host'      => 'host2',
        'database'  => 'database2',
        'username'  => 'user2',
        'password'  => 'pass2'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),
),
);

您的默認連接仍設置為mysql 這意味着,除非我們另外指定,否則應用程序將使用該mysql連接。

現在,您可以在模型中指定要使用的連接

<?php

class SomeModel extends Eloquent {

protected $connection = 'mysql2';

 }

您也可以在運行時通過setConnection方法定義連接。

 <?php

 class SomeController extends BaseController {

 public function someMethod()
 {
    $someModel = new SomeModel;

    $someModel->setConnection('mysql2');

    $something = $someModel->find(1);

    return $something;
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM