Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Laravel:Cara menggunakan beberapa hubungan tabel pivot

Pengaturan ini akan membantu Anda. Saya mencoba untuk membuat penamaan sesederhana mungkin.

users
    id
    username

challenge_user
    user_id
    challenge_id

challenges
    id
    name
    topic_id      
    category_id

topics
    id
    name

categories
    id
    name

Mendefinisikan Model Fasih Anda

class User extends Eloquent {
    public function challenges() {
        return $this->belongsToMany('Challenge');
    }
}

class Challenge extends Eloquent {
    public function users() {
        return $this->belongsToMany('User');
    }
    public function topic() {
        return $this->belongsTo('Topic');
    }
    public function category() {
        return $this->belongsTo('Category');
    }
}

class Topic extends Eloquent {
    public function challenges() {
        return $this->hasMany('Challenge');
    }
}

class Category extends Eloquent {
    public function challenges() {
        return $this->hasMany('Challenge');
    }
}

Menggunakan Model Eloquent Anda ... hanya beberapa contoh dari apa yang dapat Anda lakukan.

// Collection of all Challenges by Topic name
Topic::with('challenges')->whereName($topic_name)->first()->challenges;

// Collection of all Challenges by Category name
Category::with('challenges')->whereName($category_name)->first()->challenges;

// Collection of all Users by Challenge id
Challenge::with('users')->find($challenge_id)->users;

// Collection of Users with atleast 2 Challenges
User::has('challenges', '>', 1)->get();

// Attach Challenge to User
$user = User::find($id);
$user->challenges()->attach($challenge_id);

// Assign a Topic to a Challenge
$challenge = Challenge::find($challenge_id);
$topic     = Topic::find($topic_id);

$challenge->topic()->associate($topic);
$challenge->save();

Referensi dan bacaan yang disarankan:

Hubungan Lancar Laravel belongsTo belongsToMany hasMany

Meminta relasi Model::has()

Eager Loading Model::with()

Properti Dinamis untuk Mengakses Hubungan Selesaikan $model->relationship

Memasukkan Model terkait attach() associate()

Cakupan Kueri

Bekerja dengan tabel Pivot Jika Anda perlu mengambil data tambahan dari tabel pivot.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Koneksi Laravel MySql DB dengan SSH

  2. Apa cara terbaik untuk menyinkronkan data antara MS Access dan MySQL?

  3. MySQL memilih catatan X teratas untuk setiap individu dalam tabel

  4. Penggabungan string di MySQL

  5. Bagaimana saya bisa melihat string perintah saat menggunakan parameter MySqlCommand?