我们可以在Laravel中的Model中定义本机查询吗?

时间:2017-08-22 00:17:26

标签: php laravel eloquent laravel-eloquent

我有以下模型定义;

class Alarm extends Model
{

    protected $table = 'vwAlarm';
    protected $primaryKey = 'AlarmId';
    public $timestamps  = false ;


    public function scopeActiveAlarms($query)
    {
        return $query->whereDate('AlarmClearedUTCDateTime', '=', '9999-12-31 23:59:59.9999999'); 
    }

    public function alarmTypeDesc()
    {
        return $this->belongsTo(AlarmType::class, 'AlertTypeId', 'AlertTypeId');
    }

    public function Site()
    {
        $rec = \DB::table('vwAlarm')
            ->join('vwYfUserToSiteMappings as vw1', 'vwAlarm.SiteCode', '=', 'vw1.SiteCode')
            ->join('vwYfUserToSiteMappings as vw2','vwAlarm.CompanyId', '=', 'vw2.CompanyId')
            ->first();

        return $rec;
}
...

}

我在我的控制器中调用此模型;

 $alarm = Alarm::findOrFail($id);

在这里我看到一个问题,警报模型中的Site() method给出了不相关的数据库行。(我希望我通过的Id($ id)的结果正确)

我在这里做错了什么?这是正确的做法吗?

0 个答案:

没有答案