Cum creezi in Laravel o aplicatie care foloseste MongoDB

Configurare noua (How To)

Situatie

In continuare veti regasi informatii despre cum poti face in Laravel o aplicatie care foloseste ca baza de date MongoDB.

Solutie

Creați un model, un controler, o rută și un fișier de vizualizare

Primul nostru pas va fi să creăm un model Laravel care să reprezinte postările de pe blog. Din directorul proiectului, rulați următoarea comandă:

php artisan make:model Post -mc
  • Acest lucru va crea un fișier App/Models/Post.php și un fișier App/Http/Controllers/PostController.php.
  • În mod implicit, artizanul creează modele care extind Illuminate\Database\Eloquent\Model.
  • Totuși, pentru MongoDB, dorim să extindem modelul MongoDB Eloquent, așa că vrem să edităm App/Models/Post.php. Modelul nostru Post ar trebui să arate astfel:
namespace App\Models;

use Jenssegers\Mongodb\Eloquent\Model;

class Post extends Model
{
  protected $connection = ‘mongodb’;
}

Rețineți că atunci când stochează date noi, Laravel va crea automat colecția în baza de date MongoDB pentru dvs. În mod implicit, numele colecției este pluralul modelului utilizat („postări” în acest caz). Cu toate acestea, puteți suprascrie acest lucru setând o proprietate de colecție pe model, astfel:

protected $collection = ‘blog_posts’;

Dacă utilizați mai multe baze de date, ați dori, de asemenea, să specificați numele conexiunii la baza de date pe model, așa cum este indicat mai sus.

Apoi, putem folosi modelul nostru Post pentru a citi și afișa postările noastre de blog din baza de date MongoDB. Mai întâi, să creăm o funcție în PostController pentru a obține o postare pe blog folosind un slug:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Post;

class PostController extends Controller
{
  public function show($slug)
  {
      return view(‘post’, [
          ‘post’ => Post::where(‘slug’, ‘=’, $slug)->first()
      ]);
  }

}

În exemplul de mai sus, preluăm postarea folosind numele lui slug. Modelele MongoDB Eloquent acceptă toate metodele standard de interogare Eloquent, dar acceptă și interogări suplimentare care sunt specifice MongoDB. Pentru mai multe detalii, consultați https://github.com/jenssegers/laravel-mongodb.

Apoi, să adăugăm următoarea linie la fișierul routes\web.php pentru a crea o rută pentru postările de blog:

Route::get(‘/post/{slug}’, [PostController::class, ‘show’]);

 

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PostController;

/*
|————————————————————————
| Web Routes
|————————————————————————
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the “web” middleware group. Now create something great!
|
*/

Route::get(‘/’, function () {
    return view(‘welcome’);
});

Route::get(‘/post/{slug}’, [PostController::class, ‘show’]);
Afișați datele utilizând vizualizarea Laravel

În cele din urmă, să adăugăm o vizualizare pentru a formata și a stila datele postării de blog pentru afișare. Numele vizualizării trebuie să se potrivească cu vizualizarea pe care o folosim în controlerul nostru. Putem face acest lucru prin crearea fișierului myapp/resources/views/post.blade.php cu următorul conținut:

<!DOCTYPE html>
<html>
<head>
  <title>MyBlog</title>
</head>
<body>
  <h1>{{$post->title}}</h1>
  <div>{{$post->body}}</div>
</body>
</html>

 

Tip solutie

Permanent

Voteaza

(3 din 8 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?