connecting-a-database-to-laravel

#將資料庫連接到Laravel 此教程是Laravel手冊的一部分。從https://flaviocopes.com/access/下載它。 我們正在以非常基本的形式使用Laravel,沒有使用任何資料庫。 現在,我想設置一個資料庫並配置Laravel以使用它。 在我們配置資料庫之後,我將向您展示如何使用表單接受用戶輸入並將數據存儲在資料庫中,以及如何將這些數據可視化顯示。 我還將向您展示如何使用資料庫中的數據與動態路由。 ###將資料庫連接到Laravel 使用資料庫最簡單的方式是使用SQLite。 SQLite只是一個在您的網站上托管的文件,不需要進行特殊設置。 打開.env文件,將默認配置改為 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD= 添加 DB_CONNECTION=sqlite Laravel會在您第一次運行遷移時自動在database/database.sqlite中創建一個SQLite數據庫。

PostgreSQL vs. MySQL,一個比較

一個關於PostgreSQL和MySQL的快速比較。 在這篇文章中,我希望對PostgreSQL和MySQL進行高層次的比較。 PostgreSQL的一個主要賣點是其授權。 PostgreSQL是開源的,擁有GPL許可證,由PostgreSQL全球開發團隊社區擁有。 如今MySQL由Oracle擁有,並且有2種不同的許可證。其中一個是開源許可證,另一個是商業許可證。這並不意味著如果您想將MySQL用於商業項目,您就需要支付費用。商業許可證提供有償支持和由Oracle建立的附加軟體,這是與MySQL的深度整合。 還有一個完全開源的MySQL分支,叫做MariaDB,它在使用和品牌方面要遜於MySQL,但如果您更喜歡MySQL,並且擔心授權問題,那麼MariaDB是一個很好的替代品。 讓我們來談談功能。 大致上,MySQL和PostgreSQL的功能集是相等的。其中一個可能會做到另一個無法做到的事情,但我們談論的是非常高級的功能,這裡我不深入介紹。 兩者都是非常先進的資料庫管理系統,有著悠久的歷史。 兩者都支援SQL標準(雖然不完全),並在此基礎上添加了一些功能。兩者都遵守ACID(Atomicity,Consistency,Isolation,Durability)準則。 兩者都可以輕鬆地創建複製,兩者都非常安全,兩者都有廣泛的社區,可以解決您可能遇到的任何問題。 兩者都擁有大量的工具支持。 那麼該選擇哪一個呢?很難說。 除非您需要一個在其中一個資料庫中已實現的特定功能,而在另一個中未實現,否則我建議您選擇您已經熟悉的那個。 例如,如果您熟悉MySQL,並且使用過WordPress,那麼您可以繼續使用它(或者MariaDB)。 可能還取決於您希望在哪個平台上部署您的軟體。例如Heroku提供了內置的管理型PostgreSQL雲資料庫服務,這可能比自己管理資料庫伺服器更方便。

Prisma,如何清空資料庫

在測試使用Prisma的網站時,我經常需要清空資料庫,以清除我輸入的測試資料。 你可以使用以下方法來清除資料: await prisma.user.deleteMany({}) 如果出於某些原因你需要逐個進行處理,可以按以下方式對它們進行迭代: const users = await prisma.user.findMany({}) const deleteUser = async (user) => { return await prisma.user.delete({ where: { id: user.id } }) } const deleteUsers = async () => { users.map((user) => deleteUser(user)) } deleteUsers() 在這個例子中,其實比前面的例子多了些冗余程式碼,但你可以在deleteUser()中進行更多操作。 然而,我遇到了一個問題,因為兩個表之間存在關聯,即tweets和users。一篇tweet與一個user相關聯。所以我需要先刪除所有的tweets,然後再刪除所有的users。為此,我編寫了以下函數: export const clearData = async (prisma) => { const users = await prisma.user.findMany({}) const tweets = await prisma.tweet.findMany({}) const deleteUser = async (user) => { return await prisma.user.delete({ where: { id: user....

SQL 視圖

如何在 SQL 資料庫中創建視圖並與其互動 在 SQL 中,一個有趣的功能是可以創建視圖。 視圖就像一個表格,但不同於實際的表格,它是根據 SELECT 查詢的結果動態構建的。 讓我們使用在連接語句課程中使用過的示例: CREATE TABLE people ( age INT NOT NULL, name CHAR(20) NOT NULL PRIMARY KEY ); CREATE TABLE cars ( brand CHAR(20) NOT NULL, model CHAR(20) NOT NULL, owner CHAR(20) NOT NULL PRIMARY KEY ); 我們添加一些數據: INSERT INTO people VALUES (37, 'Flavio'); INSERT INTO people VALUES (8, 'Roger'); INSERT INTO cars VALUES ('Ford', 'Fiesta', 'Flavio'); INSERT INTO cars VALUES ('Ford', 'Mustang', 'Roger'); 我們可以創建一個稱為 car_age 的視圖,該視圖始終包含車型與車主年齡之間的關聯:...

SQL, 處理空值儲存格

如何處理 SQL 資料庫中的空資料 當我們以以下方式建立表格時: CREATE TABLE people ( age INT, name CHAR(20) ); SQL 可以自由接受空值作為記錄: INSERT INTO people VALUES (null, null); 這可能是個問題,因為現在我們有一個具有 null 值的列: age | name -----+-------- 37 | Flavio 8 | Roger | 為了解決這個問題,我們可以在表格的列上宣告限制條件,使用 NOT NULL 來防止空值: CREATE TABLE people ( age INT NOT NULL, name CHAR(20) NOT NULL ); 如果我們再次執行相同的查詢: INSERT INTO people VALUES (null, null); 我們會得到一個錯誤,像這樣: ERROR: null value in column "age" violates not-null constraint DETAIL: Failing row contains (null, null)....

SQL,從一個表複製數據到另一個表

其中一個維護任務:將數據從一個表複製到另一個表。 你可以這樣將一個表的所有元素複製到另一個表中: INSERT INTO some\_table SELECT \* FROM other\_table 當然,如果你只想選擇一些數據,你可以這樣寫: INSERT INTO some\_table SELECT \* FROM other\_table WHERE list=94 如果你要將數據複製到的表已經有數據,你可能會遇到主鍵重複的問題。 為了讓表自動填充主鍵的自增值,你可以在選擇數據時排除主鍵列: INSERT INTO some\_table (`age`, `name`, `email`) SELECT `age`, `name`, `email` FROM other\_table 在我的案例中,id 是主鍵列,我將其排除在外。

SQL介紹

SQL(Structured Query Language)是我們用來與數據庫管理系統(DBMS)進行交互的語言。 在我們介紹了最流行的概念性數據模型,實體關係(ER),以及最受歡迎的邏輯數據模型(關聯模型)之後,是時候介紹SQL了。 SQL(Structured Query Language)是我們用來與數據庫管理系統(DBMS)進行交互的語言。 正如其名所示,它不是一種編程語言,而是一種查詢語言,後來發展成為一種用於執行比僅執行查詢更高級操作的數據庫接口。 我說“發展”,但實際上SQL一直在不斷發展。它是一個標準,最初於1986年發布,然後在1989年、1992年、1999年、2003年、2006年、2008年、2011年、2016年和寫作時最新版本的2019年進行了更新。 SQL在許多流行的DBMS中得到實現:PostgreSQL、MySQL、Oracle、SQLite、MicroSoft SQL Server等等。每個不同的數據庫實現標準,或者實現特定版本,並在其上添加自定義功能,以簡化創建查詢或添加特定功能。 除非另有說明,每次我談到SQL時,我都是談論SQL標準,而不是特定的實現。 SQL是一個非常廣泛的主題。我在不同的博客文章中涵蓋了許多其內容,包括: SQL,創建表 SQL,向表中添加數據 SQL,如何使用SELECT SQL,如何更新表結構 SQL,如何更新數據 SQL,如何刪除數據和表 SQL,處理空單元格 SQL,唯一鍵和主鍵 SQL 視圖 SQL 聯接

什麼是資料庫?什麼是資料庫管理系統(DBMS)?

資料庫和資料庫管理系統(DBMS)的主要特性。 資料庫是一個仔細組織成系統的信息集合。 在電腦系統中,可以讓我們組織數據並表示信息的技術被稱為資料庫管理系統。 DBMS是一個軟件,它封裝了資料庫的數據,並為我們提供了一種集中的方式來存儲、檢索、編輯、持久化等數據。 讓我們定義一些資料庫管理系統的主要特性: 高效:資料庫需要提供最優性能來存儲和檢索數據。 持久性:存儲在資料庫中的數據是永久性存儲的。當資料庫軟件終止或機器重啟時(除了硬件故障),數據應該仍然存在。 隱私與安全:資料庫允許我們隱私地和安全地存儲數據。它允許多個用戶訪問,並且每個用戶只能訪問和編輯其被允許的數據。某些用戶可能只能訪問數據而不能編輯或刪除數據。 共享訪問:多個用戶需要能夠通過適當的權限訪問共享數據。多個應用程序也可以訪問同一個資料庫。 強大:資料庫可以處理大量的數據,並且可以根據您的需求進行擴展,使用各種高級技術。這並不意味著只有在擁有大量數據時資料庫才有用 - 基於上述特性,即使只有很少的數據記錄,資料庫也可以很有用。 市場上有很多不同的資料庫管理系統。有些類似,有些相差很大。 基於關聯模型的關聯式資料庫管理系統是現實世界中最常用的一些。 很快,我將詳細介紹3個流行的開源關聯式資料庫管理系統:PostgreSQL、MySQL和SQLite。

使用 MySQL 和 Node 的基礎操作

MySQL 是世界上最受歡迎的關聯式資料庫之一。了解如何在 Node.js 中使用它。 MySQL 是世界上最受歡迎的關聯式資料庫之一。 當然,Node 生態系統中有幾個不同的套件可以讓您與 MySQL 進行互動,存儲數據,檢索數據等等。 我們將使用 mysqljs/mysql,這個套件在 GitHub 上有超過 12,000 顆星並且存在多年。 安裝 Node mysql 套件 用以下指令安裝: npm install mysql 初始化數據庫連接 首先要引入套件: const mysql = require('mysql') 然後創建一個連接: const options = { user: 'the_mysql_user_name', password: 'the_mysql_user_password', database: 'the_mysql_database_name' } const connection = mysql.createConnection(options) 通過調用以下代碼來建立新的連接: connection.connect(err => { if (err) { console.error('An error occurred while connecting to the DB') throw err } }) 連接選項 在上面的例子中,options 對象包含了 3 個選項:...

使用 Node.js、Express 和 MongoDB 构建 REST API

在本教程中,我们将使用 Node.js 和 Express 构建一个 REST API。 该 API 将提供一组 GET 和 POST 端点,以允许获取数据和发送数据。 我们将使用 MongoDB 数据库存储这些数据。 提示:在继续本教程之前,请确保在您的系统上安装了 MongoDB 数据库(或者您可以使用 Cloud MongoDB 数据库,如果您更喜欢这种方式) 我们的任务是创建一个旅行成本计算器应用程序。 想象一下去旅行,你有一个应用程序(可以是渐进式 Web 应用程序,也可以是移动应用程序),你可以在其中添加你的任何费用。汽油、酒店、食物、门票等等。 当旅行结束时,你可以将其归档,并成为历史的一部分-你可以导航并查看过去旅行花费了多少钱。 我们这里不会创建应用程序的前端,只有 API。 现在让我们详细分解这个问题,并将其转化为一系列 API 端点。 端点是我们将调用以进行操作的唯一 URL。 比如,添加一个新的带有其名称的旅行。 在开始时,没有存储的旅行,我们需要添加一个。我想象应用程序会要求用户提供名称,并有一个“创建旅行”按钮。当点击时,应用程序会将名称发送给 /trip 端点,并使用 POST HTTP 方法。 我们有了第一个端点,它将接受一个 name 属性。 POST /trip { name } 另一个端点将列出旅行,它是: GET /trips 默认情况下,它将按照创建日期排序返回旅行。 当用户想要添加新的费用时,应用程序会使用 POST 方法调用 /expense 端点,并提供描述费用的一些参数。 POST /expense { trip, date, amount, category, description } trip 是当前选择的旅行的 ID。...