2015-09-04 251 views
-1

我必须动态创建表,所以我需要从控制器声明表名。我需要访问的变量模型如下图所示:如何在Laravel 5中动态声明表名称

use Illuminate\Database\Eloquent\Model; 

class Transation extends Model 
{  
    protected $table = 'Trans' . $this->userId; 
} 

如何传递变量模型?

回答

3

这工作,但我不知道这是否是 “laravel” 的方式:

Transaction.php

public function __construct($params=array()) { 
    if (isset($params['table'])) { 
     $this->table = $params['table']; 
    } 
} 

anyController.php

​​
+0

谢谢。它工作正常。 – Balachandiran

+1

这将强制在整个项目中为模型更改默认表名,这可以确保'all()'和'count()'静态方法在指定的表上正常工作。 使用'$ transaction = new Transaction;'然后'$ transaction-> setTable('another_table');'虽然这是Laravel的方式,但它不能正常工作。因为一旦你调用了'count()'方法,它将使用默认的表名,而不是你使用'setTable()'设置的表名。 –