laravel 4 - 一些具有特定连接的模型 - 如何避免重复?

时间:2014-01-20 06:57:20

标签: php laravel laravel-4

<?php

class Client extends Eloquent {

    protected $table = 'clients';
    private $connection = 'connection2';


    public function getById($id) {
        return DB::connection($this->connection)->table('clients')
            ->select('client_name')
            ->where('id', $id)
            ->first();
    }
}

此模型需要连接到不同于此应用程序中的连接。起初我给连接字符串作为参数,但后来决定反复传递相同的参数是不好的,当我知道对于这个模型时,只使用这个连接。现在它被硬编码为私有变量。

并且有几个这样的模型具有相同的连接。没关系,但是如果这个连接设置在一个地方可能会更好,以防它被改变 - 所以不需要去使用所有使用它的模型并改变。

因此,我想到的一件事就是拥有一些具有此连接的父模型,并且客户端模型从中扩展。

但不确定那会不会好?也许你有其他一些想法?

1 个答案:

答案 0 :(得分:1)

创建一个单独的类,用于定义连接,并在将来使用此类扩展任何类。

use Eloquent;
class Connection2Eloquent extends Eloquent
{
    protected $connection = "connection2";
}

现在使用connection2eloquent扩展您的客户端:

class Client extends Connection2Eloquent
{

}