Bagaimana untuk Menyertai Tiga Jadual dalam Laravel Menggunakan Model Fasih?

Linda Hamilton
Lepaskan: 2024-11-13 03:44:01
asal
804 orang telah melayarinya

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();
Salin selepas log masuk

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');
    }
}
Salin selepas log masuk

Kategori.php:

namespace App\Models;

use Eloquent;

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

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

Pengguna .php:

namespace App\Models;

use Eloquent;

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

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

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

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

Anda kemudian boleh mengakses sifat seperti berikut:

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

// Retrieve category name
$article->category->category_name
Salin selepas log masuk

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();
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan