@xerifandtomas tienes toda toda la razón, un return me detiene todo el ciclo, lo descarte en su momento porque extrañamente un scope que utilizo en laravel mediante terminal al retornar null o false me retorna un bucle que me saturaba la memoria.
Pero después de tantas vueltas caí en cuenta que no tiene porque ser false o null, le retorne un -1 y me funciona.
@alvaro_trewhela entiendo tu punto y tienes toda la razón, para el ejemplo expuesto funciona y es valido, creo que minimice demasiado el caso y el ejemplo, debiendo explicar que usaba laravel y sus scope mediante cronjobs.
Por si a alguien le sirve, al ejecutar un cronjob en laravel (5.4) para enviar correos tenia esto
Scope: aquí es donde no podía retornar null, false o 0 porque entra en un bucle muy extenso que satura la memoria del servidor. y al utilizar continue o break arrojaba un error que detenía todo.
PHP Fatal error: 'continue' not in the 'loop' or 'switch' context in
Código PHP:
Ver originalpublic function scopeTemplate($query, $type, $version, $data){
$result = $query->where('type', $type)->where('version', $version)->first();
// este return es el que no me dejaba avanzar
return -1;
}
list($shortCode, $index) = $matches; return $data[trim($index)]; } else {
throw new Exception("Shortcode {$shortCode} not found in template", 1);
}
}, $result->template);
return ['content' => $parsed, 'from' => $result->from, 'from_name' => $result->from_name, 'subject' => $result->subject];
}
y este es el controlador que lo llama:
Código PHP:
Ver originalpublic function SendEmail($type, $version, $data){
$datos = User::where('id', $data['xxxx'])->first();
'xxx_nombre' => $datos ->name,
'xxx_info' => $datos->firma
);
$email_data = emails_template
::Template($type, $version, array_merge($data, $xxxx_data)); if($email_data == -1){
return false;
}
Mail::send([], [], function($message) use ($email_data, $data) {
$message
->to('xxxxx', 'xxxx')
->from('xxxxx', 'xxxx')
->subject($email_data['subject'])
->setBody($email_data['content'], 'text/html');
});
}
Dado que el scope entraba en un bucle, al validar $email_data no conseguía una respuesta o bien contenía los datos producidos durante el bucle, que no tenían relación con el valor esperado.... cualquiera que fuera el caso continuaba hasta llegar a la función Mail que hacia tronar todo el sistema de envió, de un controlador principal arriba de este.