RunOneSelect( queryBuilder: SQLQueryBuilderWrapper::SELECT_ONE( table: 'Tunes', id: $_GET["tune-id"] ), ); $variants = $db->RunSelect( queryBuilder: SQLQueryBuilderWrapper::SELECT( table: 'TuneVariants', ) ->where(cond: 'T.TuneID=:__tune_id__') ->bindValue(name: '__tune_id__', value: $_GET["tune-id"]) ); $dances = $db->RunSelect( queryBuilder: SQLQueryBuilderWrapper::SELECT( table: 'Dances', ) ->cols(cols: [ "CONCAT('[', GROUP_CONCAT( CONCAT( '{\"ID\":', JSON_QUOTE(T_DS.ID), ',', '\"CreatedAt\":', JSON_QUOTE(T_DS.CreatedAt), ',', '\"DanceID\":', JSON_QUOTE(T_DS.DanceID), ',', '\"BarCountAtStart\":', T_DS.BarCountAtStart, ',', '\"BarCountAtEnd\":', T_DS.BarCountAtEnd, ',', '\"Description\":', JSON_QUOTE(T_DS.Description), '}' ) ), ']') AS Steps" ]) ->join( join: 'INNER', spec: 'DanceSteps AS T_DS', cond: 'T.ID=T_DS.DanceID' ) ->join( join: 'INNER', spec: '_Junction_Tunes_Dances AS _J_T_D', cond: 'T.ID=_J_T_D.DanceID' ) ->where(cond: '_J_T_D.TuneID=:__tune_id__') ->bindValue(name: '__tune_id__', value: $_GET["tune-id"]) ->groupBy(spec: [ 'T.ID', 'T.CreatedAt', 'T.Title', '_J_T_D.ID', '_J_T_D.CreatedAt', '_J_T_D.TuneID', '_J_T_D.DanceID', ]) ); for ($i = 0; $i < count($dances); $i++) $dances[$i]['Steps'] = json_decode( $dances[$i]['Steps'], true, JSON_THROW_ON_ERROR ); TwigWrapper::RenderTwig( target: "Pages/tune/uuid.html.twig", arguments: [ "TuneDetails"=>$tuneDetails, "TuneVariants"=>$variants, "Dances"=>$dances, ] );