Dalam Laravel, menggunakan Eloquent ORM memudahkan untuk mendapatkan data hubungan. Pertimbangkan senario berikut:
Pangkalan data Jadual:
Artikel:
Kategori:
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!