Laravel默认在哪里caluse

时间:2015-12-17 12:12:06

标签: php laravel model

在Laravel Eloquent模型中,是否可以设置模型,因此除非另有说明,否则它总是使用默认的Where子句。

所以举个例子:

$activeRecords = Records::where('status','active')->get()

进入这个:

$activeRecords = Records::all();

但如果我想获得不活跃的记录,我必须告诉它todo所以

2 个答案:

答案 0 :(得分:1)

正如@ChetanAmeta建议的那样,我会覆盖模型类中的newQuery方法:

class Records extends Eloquent {

    public function newQuery($excludeDeleted = true) {
        return parent::newQuery($excludeDeleted = true)
            ->where('status', 'active');
    }

}

答案 1 :(得分:1)

你可能想看一下SoftDelete Trait(http://laravel.com/docs/5.1/eloquent#soft-deleting),它与你的状态标志不完全相同,但却是一种干净的方式。

通过将deleted_at列添加到模式并在模型上引入特征use SoftDeletes;,您可以删除记录,但实际上不会从数据库中删除它们。

如果您之后Records::all(),您会看到所有尚未删除的记录,如果您想要删除的记录,则可以使用withTrashed方法访问。