Todos sabemos que hoy toda la electrónica se basa en los transistores. Estos pequeños componentes, que están formados por un pequeño cristal de silicio (también germanio en los antiguos tipos!) Funcionan como amplificadores y llaves electrónicas. Sin embargo, su principio de funcionamiento puede ser mucho mejor entendido si usamos un modelo hidráulico. Sí, de la misma forma que es posible montar circuitos electrónicos amplificadores y conmutadores con transistores es posible hacer lo mismo con modelos hidráulicos. Es justamente lo que veremos en este artículo.

   Para entender cómo es posible simular un transistor a partir de un modelo hidráulico, será interesante partimos del modelo electrónico que tiene la estructura y el circuito básico de funcionamiento mostrado en la figura 1.

 

Figura 1- Modelo electrónico del Transistor
Figura 1- Modelo electrónico del Transistor | Haga click en la imagen para ampliar |

 

   Como podemos ver, una fuente de alimentación (B1) está conectada entre el colector y el emisor de ese componente, teniendo una carga, que puede ser una pequeña lámpara.

   Una batería secundaria se conecta entre el emisor y la base (B2) para poder forzar por la base del componente una cierta corriente.

   Lo que la corriente de base hace es controlar la corriente principal de colector del transistor. Así, una corriente muy pequeña en la base del transistor puede hacer que una corriente mucho mayor fluya por el colector encendiendo la lámpara.

   Esta diferencia entre las corrientes es que caracteriza la capacidad de amplificación del transistor: con corrientes muy pequeñas circulando por la base, podemos controlar una corriente mucho mayor circulando entre el colector y el emisor.

   Para un modelo hidráulico, sustituimos las baterías por bombas capaces de "empujar" un líquido, por ejemplo, el agua a través de canalizaciones. Tenemos entonces una bomba potente (B1) y una bomba más débil (B2) que justamente equivalen a las baterías B1 y B2 del circuito electrónico.

   Los hilos eléctricos se sustituyen por las canalizaciones, siendo las más gruesas para conducir el flujo principal de líquido y las más finas para conducir el flujo de la bomba más débil. La carga será una pequeña turbina que girará cuando el agua (u otro líquido circular a través de ella).

   El transistor propiamente dicho, en su modelo hidráulico está formado por un conjunto de depósitos que corresponden al emisor, colector y base y algunas válvulas que son accionadas por un sistema de poleas, como muestra la figura 2.

 

Figura 2- El modelo hidráulico del transistor
Figura 2- El modelo hidráulico del transistor | Haga click en la imagen para ampliar |

 

   Cuando la bomba pequeña (B2) no está funcionando, no hay líquido entrando en el depósito B (base) y con ello la válvula V1 se mantiene cerrada ya través de la polea también mantiene la válvula secundaria (V2) cerrada. De esta forma no puede circular ningún líquido entre el depósito C (colector) y el depósito (E). En lenguaje técnico decimos que cuando el transistor no está conduciendo, él está en el "corte".

   Cuando un pequeño flujo de líquido se establece en el tubo más fino (base), acciona la válvula de paso en B y al mismo tiempo abre la válvula V2 permitiendo que un flujo mayor de líquido se establezca entre el colector y el emisor (C y C) E).

   Se observa que la corriente en este conductor principal es mayor que la pequeña corriente que se establece en la base, lo que caracteriza la amplificación del dispositivo. Como la corriente pequeña controla toda la corriente principal de líquido decimos que el dispositivo está saturado.

   En este modo de funcionamiento, el transistor tanto en su versión electrónica como hidráulica funciona como una llave conectando y apagando una gran corriente a partir de una pequeña corriente.

   El transistor también puede funcionar como amplificador, lo que se muestra en la figura 3, para la versión electrónica.

 

Figura 3 - El transistor como amplificador
Figura 3 - El transistor como amplificador | Haga click en la imagen para ampliar |

 

   En ella, la variación de una pequeña corriente en la base del transistor se traduce en una variación de mucho mayor amplitud en la corriente que circula entre el colector y el emisor. En otras palabras, la señal aplicada a la base del transistor es amplificada.

   Para la versión hidráulica, mostrada en la figura 4 tenemos lo mismo: variaciones de la corriente que fluye por el conductor de base se traducen en variaciones proporcionales del líquido que fluye por el conductor de colector.

 

Figura 4 - El amplificador hidráulico
Figura 4 - El amplificador hidráulico | Haga click en la imagen para ampliar |

 

   Esto significa que el transistor en su versión hidráulica también puede ser utilizado como un dispositivo amplificador del flujo de líquido que circula por su base.

 

Conclusión

   La idea de un dispositivo amplificador basado totalmente en las propiedades eléctricas de los materiales semiconductores nos llevó al transistor, componente que es la base de prácticamente todo lo que existe en electrónica.

   Sin embargo, como analizamos no se trata de idea exclusiva ya que podemos tener el modelo hidráulico y con él podemos elaborar "circuitos hidráulicos" importantes que pueden ser empleados en automatización y muchas otras aplicaciones.

De la misma forma, podemos tener equivalentes del transistor usando recursos mecánicos, neumáticos e incluso ópticos. ¿Los lectores serían capaces de imaginarlos?

 

 

18.931MBMemory Usage41.41msRequest Duration
Joomla! Version5.2.3
PHP Version8.3.16
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.5.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:51 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1744100316 "last" => 1744100316...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.67KB) (267μs)
  • afterInitialise (1.14MB) (3.25ms)
  • afterRoute (179.16KB) (828μs)
  • beforeRenderComponent com_content (100.65KB) (361μs)
  • Before Access::preloadComponents (all components) (33.45KB) (154μs)
  • After Access::preloadComponents (all components) (107.06KB) (484μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (7μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (20.85ms)
  • Before Access::getAssetRules (id:18748 name:com_content.article.22601) (514.65KB) (915μs)
  • After Access::getAssetRules (id:18748 name:com_content.article.22601) (7.38KB) (38μs)
  • afterRenderComponent com_content (390.06KB) (6.69ms)
  • afterDispatch (2.25KB) (41μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (1.54ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (396μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (92μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.98KB) (1.19ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (580μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (79μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (185μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (50μs)
  • afterRender (257.73KB) (3.32ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (50.35%)
    20.85ms
    1 x afterRenderComponent com_content (390.06KB) (16.15%)
    6.69ms
    1 x afterRender (257.73KB) (8.02%)
    3.32ms
    1 x afterInitialise (1.14MB) (7.86%)
    3.25ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (3.71%)
    1.54ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.98KB) (2.87%)
    1.19ms
    1 x Before Access::getAssetRules (id:18748 name:com_content.article.22601) (514.65KB) (2.21%)
    915μs
    1 x afterRoute (179.16KB) (2%)
    828μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (1.4%)
    580μs
    1 x After Access::preloadComponents (all components) (107.06KB) (1.17%)
    484μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (0.96%)
    396μs
    1 x beforeRenderComponent com_content (100.65KB) (0.87%)
    361μs
    1 x afterLoad (85.67KB) (0.64%)
    267μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (0.45%)
    185μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.37%)
    154μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.22%)
    92μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (0.19%)
    79μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.12%)
    50μs
    1 x afterDispatch (2.25KB) (0.1%)
    41μs
    1 x After Access::getAssetRules (id:18748 name:com_content.article.22601) (7.38KB) (0.09%)
    38μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    7μs
21 statements were executed, 5 of which were duplicates, 16 unique11.23ms1.57MB
  • SELECT @@SESSION.sql_mode;33μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 177μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `incbmx_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)155μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`51μs656B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `incbmx_usergroups` AS `a` LEFT JOIN `incbmx_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest82μs1.64KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`237μs20.2KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)334μs7.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 07.72ms1.46MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`352μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '22601'196μs48B/libraries/src/Table/Table.php:1348Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)186μs22.13KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`192μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `incbmx_contentitem_tag_map` AS `m` INNER JOIN `incbmx_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)260μs3.98KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`175μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM incbmx_fields AS a LEFT JOIN `incbmx_languages` AS l ON l.lang_code = a.language LEFT JOIN incbmx_users AS uc ON uc.id=a.checked_out LEFT JOIN incbmx_viewlevels AS ag ON ag.id = a.access LEFT JOIN incbmx_users AS ua ON ua.id = a.created_user_id LEFT JOIN incbmx_fields_groups AS g ON g.id = a.group_id LEFT JOIN `incbmx_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC446μs4.81KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:164Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`178μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1164μs1.89KB/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `incbmx_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)92μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context61μs1.55KBParams/plugins/system/schemaorg/src/Extension/Schemaorg.php:403Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)172μs22.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `incbmx_scheduler_tasks` AS `a` WHERE `a`.`state` = 161μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy