在我的应用程序中,我有几个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';
}
答案 0 :(得分: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() );
答案 1 :(得分:2)
一旦你有一个模型,你可以$model->setTable('mytable')
,但对于多个表我宁愿建议你做一个" base"您需要所有功能的模型,然后是其他几个扩展此类但使用protected $table = 'table'
定义自己的表的类。
但是,在您的情况下,听起来您根本不应该将数据保存在单独的数据库表中。如果您可以找到一种方法将状态存储为列而不是单独的表,那就更好了。