Quiero usar las diferentes consultas dentro de un método y quiero pasar una parte de la consulta dentro de eso.
Mi método se ve así:
static function methodName($partOfQuery) { ModelName::where('...')->$partOfQuery->...; }Y quiero hacer algo como:
$partOfQuery = where('columnName', '>=', 5)->whereRaw('Other Condition'); self::methodName($partOfQuery); Pero me enfrenté a este error: Call to undefined function App\Classes\ClassName\where()
¿Alguien podría ayudarme con este problema? Gracias
Creo que el error se debe a where se llama sin una clase de modelo elocuente.
Algo que puede hacer con el generador de consultas es llamar a una función dentro de su condición where como:
SomeModel::where(function($query){ // do something $query->where(...) })Dudo que no haya nada exactamente como lo que describiste. Pero hay alternativas, si entiendo correctamente, está tratando de encadenar múltiples métodos.
Si es así, puede hacer lo siguiente:
En su clase modelo:
static function getActiveBooks() { return self::where('status', 'active'); } public function getFeaturedBooks() { return $this->getActiveBooks()->where('featured', 'active'); }Uso:
$activeBooks = (new Book())->getFeaturedBooks()->get();Hay varias formas, también puede usar el alcance como lo describe @levi en la sección de comentarios, son 2 caras de la misma moneda.