<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gabriel</title>
    <description>The latest articles on DEV Community by Gabriel (@xotw).</description>
    <link>https://dev.to/xotw</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F919843%2F3b452821-a28c-4b1c-a1d9-b14529e717ba.png</url>
      <title>DEV Community: Gabriel</title>
      <link>https://dev.to/xotw</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xotw"/>
    <language>en</language>
    <item>
      <title>Postgres Enums dissected</title>
      <dc:creator>Gabriel</dc:creator>
      <pubDate>Fri, 26 May 2023 11:00:59 +0000</pubDate>
      <link>https://dev.to/forestadmin/postgres-enums-dissected-5295</link>
      <guid>https://dev.to/forestadmin/postgres-enums-dissected-5295</guid>
      <description>&lt;p&gt;PostgreSQL is a popular open-source object-relational database management system known for its stability, performance and feature-rich SQL implementation.&lt;/p&gt;

&lt;p&gt;Postgres enums (short for "enumerated types") represent one special data type in PostgreSQL that allows you to define a list of possible values for a column. They can be used to enforce data integrity and make it easier to query and sort data.&lt;/p&gt;

&lt;p&gt;Let's sky dive through them to see what they have to offer and how to best use them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are Postgres enums for?
&lt;/h2&gt;

&lt;p&gt;In PostgreSQL, an enum is a data type that consists of a set of symbolic names (enumerators) and their values. &lt;/p&gt;

&lt;p&gt;Enums are created using the &lt;strong&gt;CREATE TYPE&lt;/strong&gt; command and can be used in a table column just like any other data type (e.g. integer, varchar).&lt;/p&gt;

&lt;p&gt;Enums have some important differences from other data types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enum values are stored as integers, with the enumerator names serving as aliases for the integer values.&lt;/li&gt;
&lt;li&gt;Enums have a fixed internal storage size, which is the size needed to store the largest enumerator. This means that enums may take up more space than other data types (e.g. varchar) in some cases.&lt;/li&gt;
&lt;li&gt;Although Enums were originally fixed – meaning you could not add or remove values once you defined the set of enumerators – Postgres 9.1 released in 2011 enabled the ALTER function, as shown here:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b8AorUhl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/om9odhaoft3j0vvhvzz0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b8AorUhl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/om9odhaoft3j0vvhvzz0.png" alt="Image description" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Keep in mind however that when you alter an enum type, all columns that use this specific enum type will also be affected. It is therefore important to update all relevant code and scripts as to avoid any potential backfiring.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to create and use Postgres enums?
&lt;/h2&gt;

&lt;p&gt;To create an enum type in PostgreSQL, you can use the following syntax:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KnuxLld5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fd9bujis7irao7kws72b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KnuxLld5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fd9bujis7irao7kws72b.png" alt="Image description" width="800" height="212"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is an example of creating an enum type called "status" with the possible values "active", "inactive", and "deleted":&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JoxE50Me--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/owrv0f0xohrxxzdg8weq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JoxE50Me--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/owrv0f0xohrxxzdg8weq.png" alt="Image description" width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To use an enum type in a table, you can specify it as the data type for a column:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E0-gG6S7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5e4fyfui1ac3bs4urnfi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E0-gG6S7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5e4fyfui1ac3bs4urnfi.png" alt="Image description" width="800" height="175"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enums also have a number of specific functions and operators that you can use when querying data. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;enum_range()&lt;/strong&gt; returns an array of all enumerators for an enum type, in the order they were defined.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;enum_first()&lt;/strong&gt; returns the first enumerator for an enum type.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;enum_last()&lt;/strong&gt; returns the last enumerator for an enum type.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Postgres enums cons
&lt;/h2&gt;

&lt;p&gt;As mentioned earlier, enums are fixed and cannot be altered once created. In other words, they are not flexible. &lt;/p&gt;

&lt;p&gt;This can be a disadvantage if you need to add or remove values from an enum type.&lt;/p&gt;

&lt;p&gt;Furthermore, if you need to change the values of an enum type (e.g. renaming an enumerator), you will need to create a new enum type, migrate the data to the new type, and then update any references to the old enum type. This can be a time-consuming process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best practices for using Postgres enums
&lt;/h2&gt;

&lt;p&gt;It is important to keep your enums organized and maintain them properly to avoid issues down the road. Here are some tips:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose meaningful names for your enumerators&lt;/li&gt;
&lt;li&gt;Avoid using abbreviations or acronyms that may not be immediately clear&lt;/li&gt;
&lt;li&gt;Use enum ranges to define groups of related enumerators (e.g. "pending", "approved", "rejected" for a "status" enum)&lt;/li&gt;
&lt;li&gt;Consider using a tool or script to automate the process of creating and updating enums&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Considerations for using Postgres enums in relation to other data types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enums may be more suitable for small lists of fixed values (e.g. "male" or "female" for a "gender" column)&lt;/li&gt;
&lt;li&gt;For more extensive lists or sets of values that may need to be updated or changed more frequently, other data types (e.g. varchar, integer) may be more appropriate.&lt;/li&gt;
&lt;li&gt;Be aware of the potential for increased storage size when using enums, especially if you have many enumerators with long names.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In summary, enums are a useful data type in PostgreSQL that can help improve data integrity, facilitate querying and sorting, and potentially improve performance.&lt;/p&gt;

&lt;p&gt;However, it is important to consider the limitations and potential challenges of using Postgres enums, and to choose the data type that is relevant to your needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who are we?
&lt;/h2&gt;

&lt;p&gt;Forest Admin is an admin panel solution that saves your back-end engineers time and gives your operational teams more autonomy. Our highly customizable admin panel connects to your databases and APIs to ease your operations so that you can focus more on your business and less on backend operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  If you have any doubts, here's a quick view of the features Forest Admin brings to the table
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Data&lt;/strong&gt;: Forest Admin's standout feature is its ability to scan your data structure and automatically generate an operational admin panel.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DpBmziVl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k6gqe8qy7r0mn3zrsov5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DpBmziVl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k6gqe8qy7r0mn3zrsov5.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customization&lt;/strong&gt;: Once the initial admin panel has been auto-generated, Forest Admin enables you to tailor its functionality to match your precise needs, making the tool adaptable for a wide array of business applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Md6hZz-8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/84k1jw3o101omfwcehiv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Md6hZz-8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/84k1jw3o101omfwcehiv.png" alt="Image description" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workspace&lt;/strong&gt;: The dream tool to manage your daily operations. This drag and drop feature enables you to create workflows at will in order to ease your workload. The rule is simple: one workflow, one workspace.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D-bGhjFB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cp59p26hgso2t03lfvdf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D-bGhjFB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cp59p26hgso2t03lfvdf.png" alt="Image description" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;: Customize your own dashboard to take a quick look at key metrics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MYVWr4DQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l4191iw3tfjkhxjvzq7e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MYVWr4DQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l4191iw3tfjkhxjvzq7e.png" alt="Image description" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integration Capabilities&lt;/strong&gt;: Forest Admin can be installed in two ways: connecting it to an existing application built on frameworks like Node.js, Django, Laravel, Ruby on Rails, or linking it directly to one or multiple databases – check all of our integrations on our integration page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2D6CYbVE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yq86602j2e4qgagw0vgq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2D6CYbVE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yq86602j2e4qgagw0vgq.png" alt="Image description" width="800" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ready to streamline your operations? &lt;a href="https://app.forestadmin.com/signup?utm_source=referral&amp;amp;utm_medium=devto&amp;amp;utm_campaign="&gt;Sign up&lt;/a&gt; for Forest Admin today.&lt;/p&gt;

&lt;p&gt;If you want to know more about various Databases, here are a few articles we’ve written on the subject:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/forestadmin/postgresql-data-types-and-more-1kb4"&gt;PostgreSQL data types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.forestadmin.com/mongodb-vs-mysql/"&gt;MongoDB vs MySQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.forestadmin.com/best-postgres-gui/"&gt;Most popular PostgreSQL GUIs of 2022&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.forestadmin.com/top-5-mariadb-gui-tools-in-2021/"&gt;Most popular MariaDB GUIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.forestadmin.com/mongodb-cheat-sheet/"&gt;MongoDB cheat sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>PostgreSQL data types and more</title>
      <dc:creator>Gabriel</dc:creator>
      <pubDate>Thu, 11 May 2023 13:25:10 +0000</pubDate>
      <link>https://dev.to/forestadmin/postgresql-data-types-and-more-1kb4</link>
      <guid>https://dev.to/forestadmin/postgresql-data-types-and-more-1kb4</guid>
      <description>&lt;p&gt;In object-oriented programming [OOP], what a programmer does ultimately can be summarized by the manipulation of objects. These objects are various data types that interact with each other while respecting a specific set of rules – themselves depending on the programming language or framework in use.&lt;/p&gt;

&lt;p&gt;When writing a program that manipulates these objects, the programmer must create a database to save all the work performed on the aforementioned objects by the program– these objects are also referred to as data types.&lt;/p&gt;

&lt;p&gt;Although there are many different databases, we will focus on one only here : PostgreSQL – and more specifically on the types of data it can store.&lt;/p&gt;

&lt;p&gt;Let's start by addressing the elephant – pun intended – in the room: what exactly is Structured Query Language [SQL]?&lt;/p&gt;

&lt;h2&gt;
  
  
  What is SQL?
&lt;/h2&gt;

&lt;p&gt;SQL is a programming language used to interact with and manipulate databases. It enables to create, modify and query databases, as well as to control access to them.&lt;br&gt;
It has become the standard language in the development world. &lt;br&gt;
Anything that has to do with databases, such as web applications, data warehouses and business intelligence systems is often handled in SQL.&lt;/p&gt;

&lt;p&gt;SQL is a powerful and flexible language that allows users to perform a wide range of tasks, including creating and altering database structures, inserting and updating data, and querying data for specific information.&lt;/p&gt;

&lt;p&gt;There are many SQL databases tools to be used, but some rise in popularity faster than others. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why is Postgres so popular?
&lt;/h2&gt;

&lt;p&gt;Postgres has undeniably become one of – if not the one – most popular relational database management system [RDBMS].&lt;/p&gt;

&lt;p&gt;The reasons why are many but, if we’re to name a few, one could argue that it is largely due to the facts that it is secure, scalable, protects data integrity and because it complies with ACID principles [Atomicity, Consistency, Isolation, Durability] to ensure safe transactions.&lt;/p&gt;

&lt;p&gt;Alternatives to Postgres include but are not limited to MySQL, MariaDB, Microsoft SQL Server or MongoDb – all of which Forest Admin integrates at ease. &lt;/p&gt;

&lt;p&gt;There are several factors that can influence the choice of a database for a particular project. The Data model, performance, cost and the possibility to integrate the database with other systems if needed.&lt;/p&gt;

&lt;p&gt;Getting into the meat of it now, what data types can be stored in PostgreSQL?&lt;/p&gt;

&lt;h2&gt;
  
  
  Data types
&lt;/h2&gt;

&lt;p&gt;In PostgreSQL, a data type is a specific kind of object that can hold a particular type of data. &lt;/p&gt;

&lt;p&gt;There are data types families and then the actual data itself.&lt;br&gt;
When it comes to families, here they are, from the most basic to the most special:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Boolean&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Character Types&lt;/strong&gt; [char, varchar, and text]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Numeric Types&lt;/strong&gt; [integer and floating-point number]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temporal Types&lt;/strong&gt; [date, time, timestamp, and interval]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UUID&lt;/strong&gt; [Universally Unique Identifiers]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Array&lt;/strong&gt; [ array strings, numbers, etc.]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON&lt;/strong&gt; [JSON data]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;hstore&lt;/strong&gt; [key-value pair]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Special Types&lt;/strong&gt; [network address and geometric data]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a list of some common data types in PostgreSQL with a detail of what it is, and an example – again, each of them belonging to a family mentioned above:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;integer&lt;/strong&gt;: stores a 32-bit signed integer – 42&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;bigint&lt;/strong&gt;: stores a 64-bit signed integer – 8092233477720368557&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;smallint&lt;/strong&gt;: stores a 16-bit signed integer – 26727&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;decimal&lt;/strong&gt;: stores a fixed-point decimal number – 56.11&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;numeric&lt;/strong&gt;: stores a variable-precision decimal number – 12345.678&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;real&lt;/strong&gt;: stores a single-precision floating-point number – 3.14&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;double precision&lt;/strong&gt;: stores a double-precision floating-point number – 7.14159232384665358979&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;boolean&lt;/strong&gt;: stores a true or false value – true&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;char&lt;/strong&gt;: stores a single character – ’J’&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;varchar&lt;/strong&gt;: stores a variable-length character string – ’We are Forest Admin’&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;text&lt;/strong&gt;: stores a variable-length character string – ’ We are a back office solution that helps businesses manipulate and better understand their data.’&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;date&lt;/strong&gt;: stores a date (year, month, day) – '2022-12-16'&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;time&lt;/strong&gt;: stores a time (hour, minute, second) – '18:45:22'&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;timestamp&lt;/strong&gt;: stores a date and time (year, month, day, hour, minute, second) – '2022-12-16 18:45:22'&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;interval&lt;/strong&gt;: stores a duration of time (e.g. 2 days, 3 hours) – ’5 days 7 hours’&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;array&lt;/strong&gt;: a collection of items that are stored in a contiguous block of memory – [‘Hello’, 4, ‘World’, 89]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that these are just examples and may not necessarily represent the exact syntax for using these data types in a PostgreSQL database. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Char&lt;/strong&gt; may require a length specifier and &lt;strong&gt;timestamp&lt;/strong&gt; most often than not has additional formatting options.&lt;/p&gt;

&lt;p&gt;Each data type has its own set of properties and limitations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alternatives to SQL
&lt;/h2&gt;

&lt;p&gt;Although we covered PostgreSQL, there are various alternatives to SQL that you may want to consider depending on your use case and, let’s face it, your inclinations. &lt;/p&gt;

&lt;p&gt;Alternatives such as NoSQL [MongoDB, Cassandra], NewSQL [Google Cloud Spanner], Graph [Neo4j, Apache TinkerPop], Key-value [DynamoDB], Column-oriented [Apache HBase] or Object-oriented [GemStone].&lt;/p&gt;

&lt;p&gt;If you feel like chatting with us because you're curious about what we do and how we can help you, please reach out to us.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who are we?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.forestadmin.com/"&gt;&lt;strong&gt;Forest Admin&lt;/strong&gt;&lt;/a&gt; is an admin panel solution that saves your back-end engineers time and gives your operational teams more autonomy. Our highly customizable admin panel connects to your databases and APIs to ease your operations so that you can focus more on your business and less on backend operations. &lt;/p&gt;

&lt;p&gt;Ready to streamline your operations? &lt;a href="https://app.forestadmin.com/signup?utm_source=referral&amp;amp;utm_medium=devto&amp;amp;utm_campaign="&gt;&lt;strong&gt;Sign up&lt;/strong&gt;&lt;/a&gt; for Forest Admin today.&lt;/p&gt;

&lt;p&gt;If you want to know more about various Databases, here are a few articles we’ve written on the subject:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://blog.forestadmin.com/mongodb-vs-mysql/"&gt;MongoDB vs MySQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.forestadmin.com/best-postgres-gui/"&gt;Most popular PostgreSQL GUIs of 2022&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.forestadmin.com/top-5-mariadb-gui-tools-in-2021/"&gt;Most popular MariaDB GUIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.forestadmin.com/mongodb-cheat-sheet/"&gt;MongoDB cheat sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>postgres</category>
      <category>database</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Laravel vs Symfony</title>
      <dc:creator>Gabriel</dc:creator>
      <pubDate>Mon, 19 Dec 2022 17:48:08 +0000</pubDate>
      <link>https://dev.to/forestadmin/laravel-vs-symfony-4d71</link>
      <guid>https://dev.to/forestadmin/laravel-vs-symfony-4d71</guid>
      <description>&lt;p&gt;If you’re thinking of what web application framework to choose for your PHP project, you’ve come to the right place.&lt;/p&gt;

&lt;p&gt;Picking the good framework is paramount to increase efficiency and ensure delivery, depending on what you do. The two most popular PHP frameworks to date remain Symfony and Laravel.&lt;/p&gt;

&lt;p&gt;While both frameworks have similar capabilities and share many common features, there are some key differences between the two that we list here to help you make up your mind.&lt;/p&gt;

&lt;p&gt;Let’s start with a bit of history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Genesis
&lt;/h2&gt;

&lt;p&gt;PHP – standing for Personal Home Page – is a programming language that was originally created by a Danish-Canadian programmer named Rasmus Lerdor, in 1993, to handle his own website.&lt;/p&gt;

&lt;p&gt;It was designed to make it easier to create dynamic web pages, and it quickly became a popular choice for web developers because of its simplicity.&lt;/p&gt;

&lt;p&gt;Laravel and Symfony are both open-source PHP web frameworks used for web application development. Laravel was created by Taylor Otwell in 2011, while Symfony was created by Fabien Potencier in 2005.&lt;/p&gt;

&lt;p&gt;Laravel is known for its elegant syntax and ability to handle complex web applications easily, making it a popular choice among developers. Symfony, on the other hand, is known for its stability, flexibility, and the large number of features it offers.&lt;/p&gt;

&lt;p&gt;Many popular websites and web applications, such as Drupal and Magento – acquired by Adobe Inc in May 2018 for $1.68 billion – are built using one of these frameworks.&lt;/p&gt;

&lt;p&gt;Both Laravel and Symfony have been widely adopted by the web development community, and have a strong presence in the PHP ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Splitting the bill
&lt;/h2&gt;

&lt;p&gt;Although you can build any app from scratch with both frameworks, their technical differences sets them apart.&lt;/p&gt;

&lt;p&gt;Symfony is a full-stack framework that provides a wide range of tools and components that can be used to build a wide variety of web apps. That being said, it is often used by larger companies tackling bigger and more complex issues – often involving substantial features.&lt;/p&gt;

&lt;p&gt;It allows for a high degree of flexibility and customization, which logically makes the learning curve steeper for new users.&lt;/p&gt;

&lt;p&gt;Laravel’s smooth code and various magic methods have helped, among other things, to make it one of the most popular PHP frameworks. It is however more opinionated a framework in the sense that it has a specific set of conventions and assumptions on the way web apps should be built. In other words, flexibility is not its forte. It has a structure and wants you to respect it.&lt;/p&gt;

&lt;p&gt;It is often used by smaller teams and individual developers who wish to turn-on the auto-pilot – so to speak. Providing such a strict structure and guidelines helps with its simplicity and ease of use.&lt;/p&gt;

&lt;p&gt;Moreover, Laravel is built on top of a monolithic architecture – meaning your entire application runs as one single program – which provides a more integrated and cohesive framework for building web applications. This can make it easier to learn and use, but may also limit the flexibility and customization of the framework.&lt;/p&gt;

&lt;p&gt;Overall, Symfony and Laravel are both popular PHP web application frameworks, but they have some key differences in terms of their focus, target audience, architecture, and design. Which framework is better will depend on the project you’re working on.&lt;/p&gt;

&lt;h2&gt;
  
  
  No need to choose with Forest Admin
&lt;/h2&gt;

&lt;p&gt;Regardless of which framework you chose to build your application – we’ve got you covered on both.&lt;/p&gt;

&lt;p&gt;Forest Admin provides a highly flexible and secure internal tool solution to make sure you have the admin panel you need to understand your business and grow.&lt;/p&gt;

&lt;p&gt;Find all you need to know about our integration for Symfony &lt;a href="https://www.forestadmin.com/integrations/symfony" rel="noopener noreferrer"&gt;here&lt;/a&gt;, and Laravel &lt;a href="https://www.forestadmin.com/integrations/laravel" rel="noopener noreferrer"&gt;there&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you feel chatting with us because you're curious about what we do and how we can help you, please &lt;a href="//mailto:hello@forestadmin.com"&gt;reach out&lt;/a&gt; to us, or &lt;a href="https://app.forestadmin.com/signup?utm_source=referral&amp;amp;utm_medium=devto&amp;amp;utm_campaign=blog-laravel-vs-symfony&amp;amp;utm_content=blog-laravel-vs-symfony" rel="noopener noreferrer"&gt;sign up&lt;/a&gt; directly.&lt;/p&gt;

&lt;p&gt;We will be happy to discuss with you and book a demo to show you what Forest Admin can do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bullet point recap
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Laravel pros&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Easy to code and maintain.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Built-in features that help developers build sophisticated web applications quickly and easily.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy unit testing, which can help ensure that your application is reliable and bug-free.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalable for small to medium size web applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Secure with its built-in access control system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Active community of developers who contribute to the framework. This means that you can easily find help and support when you need it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy Data migration&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Laravel Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Can be difficult to learn to those new to web development.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lighter framework, which means more limited in scale.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Slower when application is getting too big for the framework.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Opinionated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Frequent updates.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Symfony pros&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Great code quality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy integration with other popular frameworks and libraries. This allows developers to easily use the best tools for each task, rather than being limited to a single framework's capabilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Large and active community. Symfony has the largest community in the market.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Built-in testing support.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Highly flexible and customizable, which allows developers to tailor the framework to their specific needs and preferences.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Good documentation. Symfony has extensive documentation that is regularly updated.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Symfony cons&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Steep learning curve due to its wide range of possibilities. It just takes time to wrap one’s head fully around it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performance issues because of its complex framework and because it also relies on other technologies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Longer tests because of the need to prebuilt code for multiple uses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lack of support. Although Symfony has a large and active community, it is not as well-supported as some other PHP frameworks.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>emptystring</category>
    </item>
  </channel>
</rss>
