Database connection in Laravel
Database connection establishing and getting data from DB
In these notes, you can understand establishing a DB connection and retrieving data from DB.
Last previous notes, we made blog post data by hard coding, now fetching data from MySQL database.
Here I have created a MySQL database and table for blogs.
Now I am going to add MySQL database configuration in Laravel. As we discussed on early notes we should config DB in .ENV file
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mylaravel
DB_USERNAME=root
DB_PASSWORD=
After this setup, I need to write a method in my controller to fetch data from DB.
Example 1
Getting data from DB, This is simple getting data from DB. I used use DB; class and I written direct query.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
class BlogController extends Controller
{
/* Below as example of getting data from DB */
public function blog_db_example($slug)
{
$post = DB::table('tbl_blogs')->where('slug',$slug)->first();
if(!$post)
{
abort(404);
}
return view('blog_from_db',["blog"=>$post]);
}
}
Example 2
Using models, Laravel has Eloquent feature.
You can create a model using PHP artisan commands
php artisan make:model model_name
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Tbl_blogs;
class BlogController extends Controller
{
/* Below as example of getting data from Model */
public function blog_db_model_example($slug)
{
return view('blog_from_db',[
"blog" => Tbl_blogs::where('slug',$slug)->firstOrFail()
]);
}
}
In my view, I simple print the blog_desc
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h3>Welcome to Blog posts from laravel</h3>
<p>{{$blog->blog_desc}}</p>
</body>
</html>
and in web.php
/**
* Example of bring blog data from db
*/
Route::get('blog_from_db_example/{post}','App\Http\Controllers\BlogController@blog_db_example');
/**
* Example of bring blog data from db
*/
Route::get('blog_from_model_db_example/{post}','App\Http\Controllers\BlogController@blog_db_model_example');
Result same as we expected
Comments
Post a Comment
Thank you :)