2

在我的应用程序中,我有几个 mysql 表:多伦多、温哥华、蒙特利尔等......我正在使用 DB-class 来处理它们,例如。

$data = DB::select('select * from toronto where id = ?', array($id));

我想做的是开始使用 Eloquent。我是 Laravel 的新手,只是想知道是否可以让一个模型与多个表一起使用,例如:

class City extends Eloquent {
      protected $table_a = 'toronto';
      protected $table_b = 'vancouver';
      protected $table_c = 'montreal';
}
4

2 回答 2

12

它不能,但你可以。方法很多,这里有一个:

创建一个 City 模型,在其构造函数中请求表名:

class City extends Eloquent {

    public function __construct($city, array $attributes = array())
    {
        parent::__construct($attributes);

        $this->table = $city;
    }

}

要使用它,您必须使用表名实例化您的类:

$toronto = new City('toronto');

然后你可以用它做任何你想做的事情:

var_dump( $toronto->where('id',701057)->get() );
于 2013-09-02T17:39:56.687 回答
2

您可以在$model->setTable('mytable')实例化模型后执行此操作,但是对于多个表,我宁愿建议您创建一个具有所需所有功能的“基本”模型,然后创建几个其他类,这些类扩展了此类,但使用protected $table = 'table'.

但是,在您的情况下,听起来您根本不应该将数据保存在单独的数据库表中。如果您能找到一种将状态存储为列而不是单独的表的方法,那就更好了。

于 2013-09-02T17:35:21.510 回答