Demande aide sur code (gestion des crons)

Bonjour,
je génère par scénario un certain nombre de tâches différées (blocs DANS).
Voici le détail d’une de ces tâches:

Ce que je souhaite faire, c’est récupérer par bloc code les tâches qui contiennent en option les tags #piece# avec la valeur ‹ SAM › par exemple.`

J’ai trouvé sur le community une expression php qui semble convenir :

$crons = cron::searchClassAndFunction('scenario', 'doIn', xxxxxxxxxx)));

mais je sèche complètement pour trouver la fin correcte de l’expression.
Merci d’avance si quelqu’un peut aider.
Dominique

pour info, on trouve ça dans la classe cron:

	/**
	* Return cron object corresponding to parameters
	* @param string $_class
	* @param string $_function
	* @param string $_option
	* @return object
	*/
	public static function byClassAndFunction($_class, $_function, $_option = '') {
		$value = array(
			'class' => $_class,
			'function' => $_function,
		);
		$sql = 'SELECT ' . DB::buildField(__CLASS__) . '
		FROM cron
		WHERE class=:class
		AND `function`=:function';
		if ($_option != '') {
			$_option = json_encode($_option, JSON_UNESCAPED_UNICODE);
			$value['option'] = $_option;
			$sql .= ' AND `option`=:option';
		}
		return DB::Prepare($sql, $value, DB::FETCH_TYPE_ROW, PDO::FETCH_CLASS, __CLASS__);
	}

Bonjour,

array("#piece#" => "SAM")

A vérifier avec:

$crons = cron::searchClassAndFunction('scenario','doIn',array("#piece#" => "SAM"));
foreach($crons as $cron) {
  $scenario->SetLog(print_r($cron,true));
}

La doc citée dans votre post n’est pas celle de la fonction utilisée.
Voir:

      public static function searchClassAndFunction($_class, $_function, $_option = '') {
		$value = array(
			'class' => $_class,
			'function' => $_function,
		);
		$sql = 'SELECT ' . DB::buildField(__CLASS__) . '
		FROM cron
		WHERE class=:class
		AND `function`=:function';
		if ($_option != '') {
			if(is_array($_option)){
				$value['option'] = json_encode($_option);
				$sql .= ' AND JSON_CONTAINS(option,:option)';
			}else{
				$value['option'] = '%' . $_option . '%';
				$sql .= ' AND `option` LIKE :option';
			}
		}
		return DB::Prepare($sql, $value, DB::FETCH_TYPE_ALL, PDO::FETCH_CLASS, __CLASS__);
	}

ou

'"#piece#":"SAM"'
1 « J'aime »

Merci @jpty, c’est ta deuxième proposition qui est la bonne.

$crons = cron::searchClassAndFunction('scenario', 'doIn', '"#piece#":"SAM"');

J’avais testé de nombreuses combinaisons, en fait pas besoin de ‹ array ›.

J’ai vérifié, les 2 fonctionnent.
Perso, je préfère avec array qui est plus souple. L’option aurait pu être écrite "#piece#" : "SAM"
Avec la 2ème, c’est une simple recherche du texte dans le champ option.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.