我有一个现有的数据库与一个相当糟糕的架构,我不能改变。我想通过Eloquent来使用它。在使用这个数据库时,我需要为所有查询添加几个关节,如下所示:如何在每个查询的默认情况下设置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');
});
}
}
是否有可能?
什么是这两个表之间的关系类型的称呼呢? – phaberest 2014-11-25 12:38:47
@phaberest没有真正的关系,只是一堆关节。 – user1692333 2014-11-25 12:40:07
无论如何,你可以尝试使用'hasOne()'和'belongsTo()',但是你需要有两个模型,每个模型一个。在'User'模型中,使用名为'sites'的方法,并在其内部返回$ this-> hasOne('Site','sites','Siteindex');',在'Site'模型中做相反的操作,但是在'users'方法中有'return $ this-> belogsTo('User','users','index');''。 – phaberest 2014-11-25 13:01:30