Laravel Eloquent Query Builder Valor predeterminado Condición

Tengo el modelo de Noticias, cuando consulto noticias, quiero que traiga noticias donde el estado = 1 es el predeterminado.

News::all(); // select * from news where status = 1 News::where('anotherColumn',2)->get(); // select * from news where status = 1 and where category = 2 

es posible? Lo que quiero es muy similar a la función de eliminación suave (se obtiene donde deleted_at no es nulo y si se desean todos los datos con la función deTrashed se puede usar).

Miré documentos pero no pude encontrar nada útil. Además, traté de manejarlo en la construcción en el modelo News pero tampoco funcionó.

Gracias.

Normalmente newQuery() para esto. newQuery() es el método que Eloquent usa para construir una nueva consulta.

 class News extends Eloquent { public function newQuery($excludeDeleted = true) { return parent::newQuery($excludeDeleted) ->where(status, '=', 1); } } 

Ahora su News::all() solo publicará sus noticias con status = 1.

Creo que cerrarán, sin entrar realmente a cambiar algunos archivos centrales …

es el scope de la consulta …

Los ámbitos le permiten reutilizar fácilmente la lógica de consulta en sus modelos. Para definir un scope, simplemente prefija un método modelo con scope:

 class News extends Eloquent { public function scopeStatus($query) { return $query->where('status', '=', 1); } } 

Utilizando ese scope

  $news = News::status()->get(); $news2 = News::status()->where('anotherColumn',2)->get(); 

No es exactamente lo que querías … pero definitivamente es un poco más corto que escribir

  News::where('status','=',1)->get(); 

una y otra vez