convertir una tabla postgres en json en yii2:
<?php
namespace app\controllers;

use yii\web\Controller;
use yii\web\Response;
use app\models\Libro; // Suponiendo que tienes un modelo Libro

class LibroController extends Controller
{
    public function actionLista()
    {
        // Obtener datos como array usando asArray()
        $libros = Libro::find()->asArray()->all();

        \Yii::$app->response->format = Response::FORMAT_JSON;

        // Devolver los datos directamente como JSON
        return $libros;
    }
}


convertir una tabla postgres en json en  laravel:
<?php

namespace App\Http\Controllers;

use App\Models\Libro;
use Illuminate\Http\JsonResponse;

class LibroController extends Controller
{
    public function lista(): JsonResponse
    {
        // Obtener todos los registros como array
        $libros = Libro::all();

        // Devolver los datos como JSON
        return response()->json($libros);
    }
}
Cómo definir la ruta para acceder a este método (en routes/web.php o routes/api.php):
use App\Http\Controllers\LibroController;
Route::get('/libro/lista', [LibroController::class, 'lista']);

javascript:
1. Con promesas (.then)
Cómo consumirlo con JavaScript sería igual que en Yii2-laravel:
fetch('/libro/lista')
  .then(response => response.json())
  .then(data => {
    data.forEach(libro => {
      console.log(libro.titulo);
    });
  });

2. Con async/await (más legible)
Cómo consumirlo en JavaScript sería igual que en Yii2-laravel:
async function obtenerLibros() {
  try {
    const response = await fetch('/libro/lista');
    const data = await response.json();
    data.forEach(libro => {
      console.log(libro.titulo);
    });
  } catch (error) {
    console.error('Error:', error);
  }
}

obtenerLibros();

3. Con callback (usando XMLHttpRequest)
Cómo consumirlo en JavaScript sería igual que en Yii2-laravel:
function obtenerLibrosConCallback(callback) {
  const xhr = new XMLHttpRequest();
  xhr.open('GET', '/libro/lista');
  xhr.onload = function() {
    if (xhr.status === 200) {
      const data = JSON.parse(xhr.responseText);
      callback(null, data);
    } else {
      callback(new Error('Error en la solicitud: ' + xhr.status));
    }
  };
  xhr.onerror = function() {
    callback(new Error('Error de red'));
  };
  xhr.send();
}

// Usando la función con callback
obtenerLibrosConCallback(function(error, data) {
  if (error) {
    console.error(error);
  } else {
    data.forEach(libro => {
      console.log(libro.titulo);
    });
  }
});

jquery:
1.-Ejemplo usando $.getJSON()

<!DOCTYPE html>
<html>
<head>
  <title>Consumir API con jQuery</title>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>

<ul id="lista-libros"></ul>

<script>
$(document).ready(function() {
  $.getJSON('/libro/lista')
    .done(function(data) {
      // data es un array de objetos libros
      $.each(data, function(index, libro) {
        $('#lista-libros').append('<li>' + libro.titulo + '</li>');
      });
    })
    .fail(function(jqxhr, textStatus, error) {
      console.error('Error al consumir la API:', textStatus, error);
    });
});
</script>

</body>
</html>

2.-Ejemplo usando $.ajax():
$.ajax({
  url: '/libro/lista',
  type: 'GET',
  dataType: 'json',
  success: function(data) {
    data.forEach(function(libro) {
      console.log(libro.titulo);
    });
  },
  error: function(jqxhr, textStatus, error) {
    console.error('Error:', error);
  }
});

laravel:
use Illuminate\Support\Facades\Http;

$response = Http::get('https://api.example.com/data');

if ($response->successful()) {
    $data = $response->json(); // decodifica JSON automáticamente a array
    // procesar $data
} else {
    // manejar error
}

yii2:
Formas comunes de consumir APIs en PHP / Yii2:
1. Usar cURL directamente (funciona en cualquier PHP)

use yii\httpclient\Client;

$client = new Client();
$response = $client->get('https://api.ejemplo.com/data')->send();

if ($response->isOk) {
    $data = $response->getData(); // Obtienes array o json decodificado automáticamente
}

2. Usar la clase yii\httpclient\Client que trae Yii2 (más moderno y elegante)
use yii\httpclient\Client;

$client = new Client();
$response = $client->get('https://api.ejemplo.com/data')->send();

if ($response->isOk) {
    $data = $response->getData(); // Obtienes array o json decodificado automáticamente
}