Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyertai Tiga Jadual dalam Laravel Menggunakan Model Fasih?

Bagaimana untuk Menyertai Tiga Jadual dalam Laravel Menggunakan Model Fasih?

Linda Hamilton
Linda Hamiltonasal
2024-11-13 03:44:01881semak imbas

How to Join Three Tables in Laravel Using Eloquent Models?

Menyertai Tiga Jadual dengan Model Laravel Fasih

Dalam Laravel, menggunakan Eloquent ORM memudahkan untuk mendapatkan data hubungan. Pertimbangkan senario berikut:

Pangkalan data Jadual:

  • Artikel:

    • id
    • tajuk
    • badan y
    • categories_id
    • user_id
  • Kategori:

    • id
    • kategori_nama
  • Pengguna:

    • id
    • nama_pengguna
    • jenis_pengguna

Objektif:

Paparan artikel bersama-sama dengan nama kategori mereka dan bukannya ID kategori dan nama pengguna dan bukannya ID pengguna.

Menggunakan Pertanyaan SQL Tradisional:

Ini boleh dicapai menggunakan pertanyaan SQL tradisional seperti ini:

$articles = DB::table('articles')
                ->join('categories', 'articles.categories_id', '=', 'categories.id')
                ->join('users', 'users.id', '=', 'articles.user_id')
                ->select('articles.id', 'articles.title', 'articles.body', 'users.user_name', 'categories.category_name')
                ->get();

Menggunakan Fasih Model:

Walau bagaimanapun, dalam Laravel, menggunakan model Eloquent membolehkan pendekatan yang lebih diperkemas. Untuk memulakan, tentukan model:

Artikel.php:

namespace App\Models;

use Eloquent;

class Article extends Eloquent
{
    protected $table = 'articles';

    public function user()
    {
        return $this->belongsTo('App\Models\User');
    }

    public function category()
    {
        return $this->belongsTo('App\Models\Category');
    }
}

Kategori.php:

namespace App\Models;

use Eloquent;

class Category extends Eloquent
{
    protected $table = "categories";

    public function articles()
    {
        return $this->hasMany('App\Models\Article');
    }
}

Pengguna .php:

namespace App\Models;

use Eloquent;

class User extends Eloquent
{
    protected $table = 'users';

    public function articles()
    {
        return $this->hasMany('App\Models\Article');
    }
}

Dengan model ini ditakrifkan, mendapatkan semula data yang diperlukan menjadi mudah:

$article = \App\Models\Article::with(['user','category'])->first();

Anda kemudian boleh mengakses sifat seperti berikut:

// Retrieve user name
$article->user->user_name

// Retrieve category name
$article->category->category_name

Selain itu, anda juga boleh mendapatkan semula artikel mengikut kategori atau penggunanya:

$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\User::with('articles')->get();

Untuk butiran lanjut, rujuk dokumentasi rasmi Laravel: http://laravel.com/docs/5.0/eloquent

Atas ialah kandungan terperinci Bagaimana untuk Menyertai Tiga Jadual dalam Laravel Menggunakan Model Fasih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn