在Laravel Eloquent模型中,是否可以设置模型,因此除非另有说明,否则它总是使用默认的Where子句。
所以举个例子:
$activeRecords = Records::where('status','active')->get()
进入这个:
$activeRecords = Records::all();
但如果我想获得不活跃的记录,我必须告诉它todo所以
答案 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
方法访问。