来自模型的原始查询

时间:2017-11-02 11:26:18

标签: laravel eloquent

我试图弄清楚如何在模型中运行原始查询。

让我们说我有一个模型FOO,这个模型有一个方法可以进行交叉表关节,对逻辑进行分组,并且对于Eloquent ORM来说是很重要的。

我想要的是能够从控制器调用此方法,如下所示:

Model::method()->get()

老实说,只要我可以将原始查询保留在模型中并从控制器中调用它,任何其他调用都可以。

我想避免的是让DB :: raw()和查询本身在控制器中。

2 个答案:

答案 0 :(得分:2)

如果您向方法添加static,则可以直接从模型Model::method()调用它,否则您应该使用模型实例$modelInstance->method()

所以在你的模型中:

public static function method(){
    // your query
    return queryBuilder;
}

就是这样,在控制器中你可以按照自己的意愿去做:

Model::method()->get()

答案 1 :(得分:0)

有效的方法是使用laravel查询范围

var myTimer = {
    minInterval: 19,
    secInterval: 59,
    min_: i want data of minInterval
    sec_: i want data of secInterval

    timerCountDownStart: function () {
        if (myTimer.min_ <= -1) {
            myTimer.min_ = myTimer.minInterval;
        }
        document.getElementById("count-timer").innerHTML = myTimer.min_ + " minute(s) et " + myTimer.sec_-- + " seconde(s) avant l\'expiration de votre réservation";

        if (myTimer.sec_ <= -1) {
            myTimer.min_--;
            myTimer.sec_ = myTimer.secInterval;
            myTimer.myStopFunction();
            $('#title-reservation').text('Votre réservation a expirée');
            $('#count-timer').fadeOut(1000);
            sessionStorage.clear('nom_station');
        }
    },

    myStopFunction: function () {
        clearInterval();
        sessionStorage.clear('nom_station');
        $('#count-timer').fadeOut(1000)
    }
};

并在控制器中

public static function scopeFoo($query)
{
    return $query->whereStatus(...);
}