我有一个相当糟糕的架构的现有数据库,我无法改变。我想通过Eloquent使用它。在使用这个数据库时,我需要为所有查询添加几个关节,如下所示:
<?php
class SomeModel extends Eloquent {
protected $table = 'users';
protected $primaryKey = 'index';
public $timestamps = FALSE;
function __construct($attributes = array())
{
parent::__construct($attributes);
$this->leftJoin('sites', 'sites.Siteindex', '=', 'users.index');
$this->leftJoin(DB::raw('(`lookups` `l`)'), function($join){
$join->on('l.value', '=', 'users.type')->where('l.fieldname', '=', 'user_type');
});
}
}
有可能吗?
答案 0 :(得分:2)
不要在用户模型中使用__construct函数,而是创建一个范围。
public function scopeGetSiteIndex($query) {
return $query->leftJoin('sites', 'sites.Siteindex', '=', 'users.index');
}
然后你可以从控制器中调用它
$siteIndex = User::getSiteIndex()->get();