https://media.notthebee.com/articles/6ac00da40234c6ac00da40234d.jpg
Michael Goessling of St. Louis, Missouri, had always known that he was adopted, but his background was a mystery for almost 60 years.
Not the Bee
Just another WordPress site
https://media.notthebee.com/articles/6ac00da40234c6ac00da40234d.jpg
Michael Goessling of St. Louis, Missouri, had always known that he was adopted, but his background was a mystery for almost 60 years.
Not the Bee
https://media.notthebee.com/articles/6abbdd6465ed36abbdd6465ed4.jpg
This is not an easy undertaking.
Not the Bee
https://media.notthebee.com/articles/6ab68f17eb61b6ab68f17eb61c.jpg
BREAKING: Media shocked to learn that God’s design for human sexuality works best and is also the most fun!
Not the Bee
https://media.notthebee.com/articles/6ab4240ad68a46ab4240ad68a5.jpg
God’s rainbow wins again!
Not the Bee
https://www.devart.com/blog/wp-content/uploads/2026/08/dbforge-2026-2-release.jpg
Here comes dbForge 2026.2, a new release of our ever-evolving ecosystem of AI-powered database lifecycle management solutions—and it’s packed with useful updates you definitely shouldn’t miss! These include a brand-new embedded PostgreSQL Debugger in dbForge Studio, handy visual object editors for PostgreSQL, broader context awareness in dbForge AI Assistant, enhanced SQL development and schema comparison capabilities, and a new, simplified product activation flow. It’s all here to make the daily work of developers, architects, and analysts much easier.
Without further ado, let’s get started!

First and foremost, we’re glad to introduce a brand-new PostgreSQL Debugger in dbForge Studio. With its help, you will no longer need to scrutinize your code in order to find potential performance bottlenecks and other possible issues. The Debugger will help you do the following:

One of the best things about our new PostgreSQL Debugger is that it’s integrated into dbForge Studio, so you won’t have to deal with any extensions or manual setups at all.
The same dbForge Studio for PostgreSQL has received new visual object editors for event triggers, functions, and procedures. These editors eliminate the need to manage these objects with raw code, bringing the convenience of a visual interface into your daily operations.
You can invoke them in multiple ways:

This is what the editor looks like for event triggers.

This is what the editor looks like for functions.

This is what the editor looks like for procedures.

Also note that dbForge Studio for PostgreSQL now lets you configure the default action performed when you double-click database objects in Database Explorer. Separate default actions can be set for tables and views, and for procedures and functions. You can do it in Tools > Options.

Another key goal of this release was to make dbForge AI Assistant smarter and more flexible than ever, allowing you to tailor it to your workflows and standards as precisely as possible. To achieve this, your control over the context has been greatly expanded, most notably with the ability to attach files. For instance:

Another useful addition to the AI Assistant is the ability to select an AI model to be used. Now you can configure it from the Tools menu > Options > AI Assistant > General. The available models include the following:
This release makes dbForge AI Assistant even more accessible by introducing a long-awaited free Express edition. It provides a limited number of tokens and 14-day storage of chat history, which is still a great way to explore the Assistant’s capabilities and try it out in your daily work.
In case you need more extensive AI assistance, with a considerably larger token allowance and unlimited chat history, you can upgrade to a paid plan at any moment.

From now on, you can apply object and column name qualification to code that is already written. Previously, the qualification settings in Options > Text Editor > Code Completion > Advanced applied only while you typed. Now, the new refactoring command uses the same settings and qualifies names in an entire pre-written SQL document or a selected fragment of code.

We have also implemented wildcard expansion for all supported contexts, whether in the entire SQL document or in a selected fragment of code.

These enhancements have been implemented in dbForge SQL Complete and three dbForge Studios: for SQL Server, MySQL, and Oracle. And if you’re dealing with multiple database systems on different projects, you may want to try dbForge Edge, a suite of four Studios that works across a huge number of databases and cloud services.

If you need to generate data for a table (or several tables) quickly, just go to Database Explorer, right-click the required table(s), and select Generate Data from the shortcut menu. You will immediately proceed to configure your generation without any unnecessary steps.

Schema comparison documents, as well as all three types of comparison reports, now include a handy Last modified column.

This feature has been implemented across dbForge for SQL Server and dbForge for Oracle.
Finally, all dbForge tools for MySQL are now seamlessly compatible with MySQL 26.7 and MariaDB 13.x.

The update is already available, so you can open your dbForge product, proceed to Help > Check for Updates, and get your dbForge 2026.2 right away.
If you’re not a user of dbForge yet, we gladly invite you to download any product for a free trial and give it a go in your daily work.
For extra convenience, we have introduced product activation via a simple sign-in, now available alongside the traditional methods: entering an activation key and generating an activation request.

And, like we said previously, if you’re dealing with multiple database systems on different projects, you can try dbForge Edge, an AI-powered multidatabase solution that helps you cover the entire database lifecycle—including database design, development, management, and administration—across SQL Server, MySQL, MariaDB, Oracle, PostgreSQL, and a vast number of related database systems and cloud services.

Planet for the MySQL Community
https://laravelnews.s3.amazonaws.com/featured-images/2026-09-22-social-network-php-48-hours.png
Nuno Maduro, Brent Roose, and Matthieu Napoli spent two days at the JetBrains office building a full social network in PHP, and recorded all of it.
The post Live Stream: Building a Social Network in PHP in 48 Hours appeared first on Laravel News.
Join the Laravel Newsletter to get all the latest
Laravel articles like this directly in your inbox.
Laravel News
https://opengraph.githubassets.com/5f86d273fb5ea7c4aba684c9b835365d2cdc94c88444cbf16125197728d92098/alimarchal/laravel-chart-of-accounts-package
Professional-grade, production-ready Chart of Accounts and double-entry Accounting module for Laravel.
One-command install. Works with Jetstream (Blade/Livewire) and Breeze (Inertia/React).Author: Ali Raza Marchal — kh.marchal@gmail.com
Package: alimarchal/laravel-chart-of-accounts
Source: github.com/alimarchal/laravel-chart-of-accounts-package
| Dimension | Score | Notes |
|---|---|---|
| Architecture | 9.5/10 | Clean service-layer, Actions pattern, no God classes |
| Double-Entry Correctness | 10/10 | Balance enforced at DB and application layer + UI |
| API Coverage | 9/10 | Full versioned REST API with Eloquent resources |
| Frontend Flexibility | 10/10 | Dual-stack: one env switch (ACCOUNTING_UI_DRIVER) |
| Reporting Depth | 9/10 | 10 financial reports covering all standard statements |
| Security | 9/10 | Spatie Permission RBAC, route middleware, @can guards |
| Developer Experience | 9.5/10 | One-command install, JournalEntry::record() helper, Select2 UI |
| Test Coverage | 8/10 | Feature tests for posting, reversals, voids, edge cases |
| Documentation | 9.5/10 | Full README, CHANGELOG, PHPDoc, API examples |
composer require alimarchal/laravel-chart-of-accounts
Blade/Livewire apps (Jetstream): add
ACCOUNTING_UI_DRIVER=bladeto.envbefore installing.
Inertia/React apps (Breeze): leave default (inertia).
php artisan accounting:install
accounting:install does automatically (11 steps):
config/accounting.php)resources/views/vendor/accounting/)public/vendor/accounting/spatie/laravel-permission migrations (if not present)spatie/laravel-activitylog migrations (if not present)php artisan migratesuper-admin role to first userAfter install — add HasRoles to your User model:
use Spatie\Permission\Traits\HasRoles; class User extends Authenticatable { use HasRoles; }
Available roles: super-admin (all), admin, accountant, viewer.
After composer update alimarchal/laravel-chart-of-accounts:
php artisan accounting:update
Re-publishes views, assets, config, JS; runs new migrations; syncs DB objects.
By default the package uses the /accounting/ URL prefix. To change it:
# .env ACCOUNTING_ROUTE_PREFIX=settings # URLs: /settings/journal-entries, /settings/reports/... ACCOUNTING_ROUTE_NAME_PREFIX=accounting # Route names stay: accounting.dashboard, accounting.journal-entries.index
Route names stay as
accounting.*regardless of the URL prefix, so views and redirects work without changes.
Settings-style routes example (used in our demo):
| URL | Route Name |
|---|---|
/settings |
accounting.dashboard |
/settings/journal-entries |
accounting.journal-entries.index |
/settings/reports/general-ledger |
accounting.reports.general-ledger |
/settings/chart-of-accounts |
accounting.chart-of-accounts.index |
/settings/periods |
accounting.periods.index |
/settings/users |
settings.users.index |
/settings/roles |
settings.roles.index |
/settings/permissions |
settings.permissions.index |
The fastest way to create a balanced GL entry programmatically:
use Alimarchal\LaravelChartOfAccounts\Models\JournalEntry; // Create a draft entry $entry = JournalEntry::record( description: 'Office rent payment', debitAccountCode: '5101', // Rent Expense creditAccountCode: '1101', // Cash amount: 150000, post: false, // save as draft ); // Create and post immediately $entry = JournalEntry::record( description: 'Salary payment — June 2026', debitAccountCode: '6101', // Salaries Expense creditAccountCode: '1101', // Cash amount: 500000, post: true, // post immediately reference: 'SAL-2026-06', ); echo $entry->status; // 'posted' echo $entry->reference; // 'SAL-2026-06' echo $entry->id; // auto-assigned ID
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
description |
string |
Yes | Human-readable transaction description |
debitAccountCode |
string |
Yes | Account code for the debit line (e.g. '6101') |
creditAccountCode |
string |
Yes | Account code for the credit line (e.g. '1101') |
amount |
float |
Yes | Amount — same value debited AND credited |
post |
bool |
No | true = post immediately, false = draft (default) |
reference |
string|null |
No | Optional voucher/invoice reference number |
What it does automatically:
ChartOfAccountJournalEntryService::post()Returns: Fresh JournalEntry model.
Throws: ModelNotFoundException if account code or open period not found.
Create a draft entry:
POST /api/accounting/v1/journal-entries Authorization: Bearer {token} Content-Type: application/json { "entry_date": "2026-06-04", "accounting_period_id": 1, "currency_id": 1, "fx_rate_to_base": 1, "reference": "SAL-2026-06", "description": "Salary payment June 2026", "lines": [ { "chart_of_account_id": 42, "debit": 500000, "credit": 0, "description": "Salaries Expense" }, { "chart_of_account_id": 11, "debit": 0, "credit": 500000, "description": "Cash" } ] }
Post entry:
POST /api/accounting/v1/journal-entries/{id}/post Authorization: Bearer {token}
Reverse entry:
POST /api/accounting/v1/journal-entries/{id}/reverse Authorization: Bearer {token} Content-Type: application/json { "description": "Reversal of SAL-2026-06" }
Void entry:
POST /api/accounting/v1/journal-entries/{id}/void Authorization: Bearer {token}
List with filters:
GET /api/accounting/v1/journal-entries?filter[status]=posted&filter[entry_date_from]=2026-06-01&sort=-entry_date
Visit /settings/journal-entries/create (or /accounting/journal-entries/create).
UI features:
Base URL: /api/accounting/v1
| Method | Endpoint | Description |
|---|---|---|
| GET/POST | /account-types |
List / Create |
| GET/PUT/DELETE | /account-types/{id} |
Show / Update / Delete |
| GET/POST | /chart-of-accounts |
List / Create |
| GET/PUT/DELETE | /chart-of-accounts/{id} |
Show / Update / Delete |
| GET/POST | /currencies |
List / Create |
| GET | /accounting-periods |
List periods |
| GET/POST | /journal-entries |
List / Create |
| GET | /journal-entries/{id} |
Show with lines |
| PUT | /journal-entries/{id} |
Update draft |
| POST | /journal-entries/{id}/post |
Post draft |
| POST | /journal-entries/{id}/void |
Void |
| POST | /journal-entries/{id}/reverse |
Reverse |
| GET/POST | /reconciliations |
List / Create |
| GET | /bank-accounts |
List |
| GET | /cost-centers |
List |
| GET | /tax-codes |
List |
| GET | /tax-rates |
List |
| GET | /account-balance-snapshots |
Period-end snapshots |
All list endpoints support ?filter[field]=value, ?sort=field, ?page=N.
php artisan vendor:publish --tag=accounting-config
// config/accounting.php return [ 'ui_driver' => env('ACCOUNTING_UI_DRIVER', 'inertia'), // 'inertia' or 'blade' 'route_prefix' => env('ACCOUNTING_ROUTE_PREFIX', 'accounting'), 'route_name_prefix' => env('ACCOUNTING_ROUTE_NAME_PREFIX', 'accounting'), 'settings_route_prefix' => env('SETTINGS_ROUTE_PREFIX', 'settings'), 'api_prefix' => env('ACCOUNTING_API_PREFIX', 'api/v1/accounting'), 'middleware' => ['web', 'auth'], 'use_permissions' => true, 'defaults' => [ 'currency_code' => env('ACCOUNTING_BASE_CURRENCY', 'PKR'), 'cash_account_code' => env('ACCOUNTING_CASH_ACCOUNT_CODE', '1101'), 'bank_account_code' => env('ACCOUNTING_BANK_ACCOUNT_CODE', '1102'), 'retained_earnings_account_code' => env('ACCOUNTING_RETAINED_EARNINGS_ACCOUNT_CODE', '3101'), 'rounding_account_code' => env('ACCOUNTING_ROUNDING_ACCOUNT_CODE', '5201'), ], ];
| Command | Description |
|---|---|
accounting:install |
Full setup: publish all assets, migrate, seed, sync, verify |
accounting:update |
Re-publish assets + sync DB after package upgrade |
accounting:seed |
Seed account types, currencies, COA, permissions, periods |
accounting:sync-db-objects |
Sync database views, triggers, stored procedures |
accounting:verify |
Verify accounting data integrity |
accounting:health-check |
Run accounting health checks |
accounting:rebuild-snapshots |
Rebuild account balance snapshots |
accounting:close-fiscal-year |
Close the current fiscal year |
accounting:close-period |
Close the current accounting period |
accounting:open-period |
Open a new accounting period |
| Model | Table | Description |
|---|---|---|
AccountType |
accounting_account_types |
Asset, Liability, Equity, Revenue, Expense |
ChartOfAccount |
accounting_chart_of_accounts |
Hierarchical account tree |
Currency |
accounting_currencies |
Currencies and exchange rates |
AccountingPeriod |
accounting_periods |
Fiscal periods with open/close state |
JournalEntry |
accounting_journal_entries |
Entry header (draft/posted/void/reversed) |
JournalEntryLine |
accounting_journal_entry_lines |
Debit/credit lines |
BankAccount |
accounting_bank_accounts |
Bank account register |
Reconciliation |
accounting_reconciliations |
Bank reconciliation records |
TaxCode |
accounting_tax_codes |
Tax code definitions |
TaxRate |
accounting_tax_rates |
Tax rates per code |
AccountingAuditLog |
accounting_audit_logs |
Full change audit trail |
AccountBalanceSnapshot |
accounting_account_balance_snapshots |
Period-end snapshots |
CostCenter |
accounting_cost_centers |
Departmental cost centers |
| Permission | Description |
|---|---|
accounting.view |
View all accounting screens |
accounting.manage-settings |
Manage roles, users, periods |
account-types.view/create/update/delete |
Account type CRUD |
currencies.view/create/update/delete |
Currency CRUD |
periods.view/create/update/delete/close/reopen |
Period management |
chart-of-accounts.view/create/update/delete |
COA CRUD |
cost-centers.view/create/update/delete |
Cost center CRUD |
journal-entries.view/create/update/delete/post/reverse/void |
Journal entry workflow |
bank-accounts.view/create/update/delete |
Bank account CRUD |
reconciliations.view/create/update/delete |
Reconciliation CRUD |
tax-codes.view/create/update/delete |
Tax code CRUD |
tax-rates.view/create/update/delete |
Tax rate CRUD |
account-balance-snapshots.view |
View balance snapshots |
reports.*.view |
View individual reports (GL, TB, BS, IS, CF, AR, AP, BB, CB, AB) |
audit-logs.view |
View audit trail |
user.view/create/update/delete/assign-role/assign-permission |
User management |
Roles: super-admin (all), admin, accountant, viewer.
All <select> elements use Select2 4.1.0 served from public/vendor/accounting/:
public/vendor/accounting/jquery.min.js — jQuery 3.5.1
public/vendor/accounting/select2.min.js — Select2 4.1.0
public/vendor/accounting/select2.min.css — Select2 CSS
Falls back to CDN if assets not published.
Journal entry line dropdowns use Select2 with full Livewire compatibility:
livewire:updated eventchange event fired after Select2 selection to sync with Livewire stateTo re-publish:
php artisan vendor:publish --tag=accounting-assets --force
| Status | Description |
|---|---|
| Draft | Editable, not in balances |
| Posted | Locked, balances updated, period must be open |
| Reversed | Counter-entry with swapped debits/credits (GAAP method) |
| Voided | Cancelled without counter-entry |
Balance is enforced at three layers:
save() rejects if |debits − credits| ≥ 0.01JournalEntryService::post() validates before postingQ: How do I change the URL from /accounting/ to /settings/?
A: Add ACCOUNTING_ROUTE_PREFIX=settings to .env. Route names stay accounting.* so no view changes needed.
Q: Does this work with Jetstream (Livewire)?
A: Yes. Set ACCOUNTING_UI_DRIVER=blade in .env before accounting:install.
Q: How do I update after a package upgrade?
A: Run php artisan accounting:update.
Q: Can I create GL entries without the UI?
A: Yes — use JournalEntry::record(description, debitCode, creditCode, amount, post: true).
Q: Why is the Save button disabled?
A: Debits and credits must be equal before saving. Enter matching amounts in the debit/credit columns.
Q: What is accounting:update?
A: Re-publishes views, assets, config with --force, runs new migrations, syncs DB objects. Run after every composer update.
See CHANGELOG.md for full version history.
MIT — see LICENSE.
laravel accounting · laravel chart of accounts · laravel double-entry bookkeeping ·
laravel journal entries · laravel general ledger · laravel trial balance ·
laravel balance sheet · laravel income statement · laravel cash flow ·
laravel bank reconciliation · laravel ERP · laravel GAAP · laravel IFRS ·
double entry bookkeeping php · accounting package for laravel · laravel COA ·
laravel multi-currency · laravel financial reports · laravel accounting module
Laravel News Links
JSONPath is a part of SQL Standard. MySQL and MariaDB support a subset of it: “lax mode” only, no support for predicates, etc. But even the lax mode implementation has behavior different from the standard: MDEV-40746: JSON Path computation doesn’t do lax mode unboxing. The same non-standard behavior can be observed in MariaDB, MySQL, and […]Planet for the MySQL Community
https://media.babylonbee.com/articles/6aa43dce484a66aa43dce484a7.jpg
Don’t you just hate it when you’re out buying Pokémon cards, only to discover that you left your wallet at home? Well, with an exciting new life hack, you’ll never forget your wallet again.
To avoid the hassle and embarrassment that result from leaving your wallet at home, try sitting it next to your katana. You never forget to leave home without your trusty katana, so when you gear up to leave the house, your wallet will be right there waiting for you. It works every time!
All you have to do is find a nice, convenient place for your katana that also has a spot for your wallet. And for an extra tip, try engraving your katana with a helpful message. "Don’t forget your wallet!" It’s helpful for you, and for your enemies who will need that extra cash to pay the boatman for passage to cross the River Styx.
You’re always going to need your katana with you, so it just makes sense to keep all your daily essentials together. Wallet, keys, phone, Tamagotchi. If you keep everything with your katana, you’ll never be disappointed.
Start today by letting your honor for your katana protect you from leaving your wallet behind ever again.
The Babylon Bee finally exposes everything about the Jews in this documentary of hard-hitting investigative journalism.
Babylon Bee
With MySQL Workbench 26.7, we introduced a new generation of MySQL Workbench, built on updated technology and on the MySQL Shell foundation. Alfredo Kojima’s post, Introducing MySQL Workbench 26, provides a great overview of the new architecture and the capabilities available in this release. Rather than repeat that overview, I wanted to share a few things […]Planet MySQL